From d57a0a05ab57d0133cecf1d45b2f1b85eae8895b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Thu, 12 Jan 2012 18:52:12 +0100 Subject: [PATCH 1/4] Withdraw partial maximization state when resizing partially maximized client but moveResizeMaximizedWindows() isn't true REVIEW: 103683 BUG: 290990 FIXED-IN: 4.8 --- geometry.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geometry.cpp b/geometry.cpp index 0e134e03e8..7f36586a89 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -2567,7 +2567,7 @@ bool Client::startMoveResize() // If we have quick maximization enabled then it's safe to automatically restore windows // when starting a move as the user can undo their action by moving the window back to // the top of the screen. When the setting is disabled then doing so is confusing. - if (maximizeMode() != MaximizeRestore && options->moveResizeMaximizedWindows()) { + if (maximizeMode() != MaximizeRestore && (maximizeMode() != MaximizeFull || options->moveResizeMaximizedWindows())) { // allow moveResize, but unset maximization state in resize case if (mode != PositionCenter) { // means "isResize()" but moveResizeMode = true is set below geom_restore = geom_pretile = geometry(); // "restore" to current geometry From 5f2371a47d375236e1a7b5fb9a93bcec4367692d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Thu, 12 Jan 2012 19:01:43 +0100 Subject: [PATCH 2/4] Don't listen to repetitive motif hints regarding the window border and prefer rules over them anyway BUG: 291312 REVIEW: 103681 FIXED-IN: 4.8 --- client.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client.cpp b/client.cpp index 8c00249884..520ed858c0 100644 --- a/client.cpp +++ b/client.cpp @@ -1984,15 +1984,15 @@ void Client::getMotifHints() { bool mgot_noborder, mnoborder, mresize, mmove, mminimize, mmaximize, mclose; Motif::readFlags(client, mgot_noborder, mnoborder, mresize, mmove, mminimize, mmaximize, mclose); - if (mgot_noborder) { + if (mgot_noborder && motif_noborder != mnoborder) { motif_noborder = mnoborder; // If we just got a hint telling us to hide decorations, we do so. if (motif_noborder) - noborder = true; + noborder = rules()->checkNoBorder(true); // If the Motif hint is now telling us to show decorations, we only do so if the app didn't // instruct us to hide decorations in some other way, though. - else if (!motif_noborder && !app_noborder) - noborder = false; + else if (!app_noborder) + noborder = rules()->checkNoBorder(false); } if (!hasNETSupport()) { // NETWM apps should set type and size constraints From 17eb923f34b56a6db93287e04498417d4e95a0e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20L=C3=BCbking?= Date: Fri, 13 Jan 2012 03:08:40 +0100 Subject: [PATCH 3/4] Fix regression igonring hiddenPreviews on stacking updates BUG: 289945 REVIEW: 103687 --- layers.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/layers.cpp b/layers.cpp index 931b988aa2..31d1c49d11 100644 --- a/layers.cpp +++ b/layers.cpp @@ -174,6 +174,15 @@ void Workspace::propagateClients(bool propagate_new_clients) newWindowStack << (Window*)client->frameId(); } + + // when having hidden previews, stack hidden windows below everything else + // (as far as pure X stacking order is concerned), in order to avoid having + // these windows that should be unmapped to interfere with other windows + for (int i = stacking_order.size() - 1; i >= 0; i--) { + if (!stacking_order.at(i)->hiddenPreview()) + continue; + newWindowStack << (Window*)stacking_order.at(i)->frameId(); + } // TODO isn't it too inefficient to restack always all clients? // TODO don't restack not visible windows? assert(newWindowStack.at(0) == (Window*)supportWindow->winId()); From a243d0b0b8105ec262548d7fb72643472efaebd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Sat, 14 Jan 2012 11:55:39 +0100 Subject: [PATCH 4/4] Delete highlight windows property from correct window TabBox is always declarative view. --- tabbox/tabboxhandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tabbox/tabboxhandler.cpp b/tabbox/tabboxhandler.cpp index a03dd5fe02..0e8ad894ba 100644 --- a/tabbox/tabboxhandler.cpp +++ b/tabbox/tabboxhandler.cpp @@ -223,7 +223,7 @@ void TabBoxHandlerPrivate::endHighlightWindows(bool abort) // highlight windows Display *dpy = QX11Info::display(); Atom atom = XInternAtom(dpy, "_KDE_WINDOW_HIGHLIGHT", False); - XDeleteProperty(dpy, config.isShowTabBox() && view ? view->winId() : QX11Info::appRootWindow(), atom); + XDeleteProperty(dpy, config.isShowTabBox() && m_declarativeView ? m_declarativeView->winId() : QX11Info::appRootWindow(), atom); } /***********************************************************