void HomeApplication::setUpdatesEnabled(bool enabled) { if (updatesEnabled != enabled) { updatesEnabled = enabled; if (!updatesEnabled) { LipstickCompositorWindow *topmostWindow = qobject_cast<LipstickCompositorWindow *>(LipstickCompositor::instance()->windowForId(LipstickCompositor::instance()->topmostWindowId())); if (topmostWindow != 0 && topmostWindow->hasFocus()) { onUpdatesDisabledUnfocusedWindowId = topmostWindow->windowId(); LipstickCompositor::instance()->clearKeyboardFocus(); } LipstickCompositor::instance()->hide(); QGuiApplication::platformNativeInterface()->nativeResourceForIntegration("DisplayOff"); } else { QGuiApplication::platformNativeInterface()->nativeResourceForIntegration("DisplayOn"); emit LipstickCompositor::instance()->displayAboutToBeOn(); LipstickCompositor::instance()->showFullScreen(); if (onUpdatesDisabledUnfocusedWindowId > 0) { if (!screenLock->isScreenLocked()) { LipstickCompositorWindow *topmostWindow = qobject_cast<LipstickCompositorWindow *>(LipstickCompositor::instance()->windowForId(LipstickCompositor::instance()->topmostWindowId())); if (topmostWindow != 0 && topmostWindow->windowId() == onUpdatesDisabledUnfocusedWindowId) { topmostWindow->takeFocus(); } } onUpdatesDisabledUnfocusedWindowId = 0; } } } }
void LipstickCompositor::surfaceAboutToBeDestroyed(QWaylandSurface *surface) { Q_ASSERT(surface); LipstickCompositorWindow *item = static_cast<LipstickCompositorWindow *>(surface->surfaceItem()); surface->setSurfaceItem(0); if (surface == m_fullscreenSurface) setFullscreenSurface(0); if (item) { int id = item->windowId(); int gc = ghostWindowCount(); m_mappedSurfaces.remove(item->windowId()); emit windowCountChanged(); emit windowRemoved(item); item->m_windowClosed = true; item->tryRemove(); if (gc != ghostWindowCount()) emit ghostWindowCountChanged(); windowRemoved(id); emit availableWinIdsChanged(); } }
void LipstickCompositor::surfaceTitleChanged() { QWaylandSurface *surface = qobject_cast<QWaylandSurface *>(sender()); LipstickCompositorWindow *window = static_cast<LipstickCompositorWindow *>(surface->surfaceItem()); if (window) { emit window->titleChanged(); int windowId = window->windowId(); for (int ii = 0; ii < m_windowModels.count(); ++ii) m_windowModels.at(ii)->titleChanged(windowId); } }