diff options
Diffstat (limited to 'source/xap/fluxbox/dcdde4d32c93d01df205bc06d7dfcbd356be031f.patch')
-rw-r--r-- | source/xap/fluxbox/dcdde4d32c93d01df205bc06d7dfcbd356be031f.patch | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/source/xap/fluxbox/dcdde4d32c93d01df205bc06d7dfcbd356be031f.patch b/source/xap/fluxbox/dcdde4d32c93d01df205bc06d7dfcbd356be031f.patch new file mode 100644 index 00000000..71b558e1 --- /dev/null +++ b/source/xap/fluxbox/dcdde4d32c93d01df205bc06d7dfcbd356be031f.patch @@ -0,0 +1,100 @@ +From dcdde4d32c93d01df205bc06d7dfcbd356be031f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Thomas=20L=C3=BCbking?= <thomas.luebking@gmail.com> +Date: Sat, 25 Jun 2016 22:25:48 +0200 +Subject: replace FbRootWindow::depth with maxDepth + +The depth member of FbWindow was abused to store the maximum depth +but that gets overridden with geometry changes of the root window +(screen layout changes) so we store and read the value explicitly while +::depth() maintains the actual depth of the root window + +The result of this is that frames for ARGB windows were created with a +wrong depth and failed to reparent the client window. + +BUG: 1102 +BUG: 1058 +--- + src/FbRootWindow.cc | 7 ++++--- + src/FbRootWindow.hh | 2 ++ + src/FbWinFrame.cc | 4 ++-- + src/Screen.cc | 2 +- + 4 files changed, 9 insertions(+), 6 deletions(-) + +diff --git a/src/FbRootWindow.cc b/src/FbRootWindow.cc +index d17d56f..91bd695 100644 +--- a/src/FbRootWindow.cc ++++ b/src/FbRootWindow.cc +@@ -30,7 +30,8 @@ FbRootWindow::FbRootWindow(int screen_num): + m_colormap(0), + m_decorationDepth(0), + m_decorationVisual(0), +- m_decorationColormap(0) { ++ m_decorationColormap(0), ++ m_maxDepth(depth()) { + + Display *disp = FbTk::App::instance()->display(); + +@@ -55,9 +56,9 @@ FbRootWindow::FbRootWindow(int screen_num): + + for (int i = 0; i < vinfo_nitems; i++) { + if ((DefaultDepth(disp, screen_num) < vinfo_return[i].depth) +- && (static_cast<int>(depth()) < vinfo_return[i].depth)){ ++ && (m_maxDepth < vinfo_return[i].depth)){ + m_visual = vinfo_return[i].visual; +- setDepth(vinfo_return[i].depth); ++ m_maxDepth = vinfo_return[i].depth; + } + + if((m_decorationDepth < vinfo_return[i].depth) +diff --git a/src/FbRootWindow.hh b/src/FbRootWindow.hh +index 8e97cc3..739c9ef 100644 +--- a/src/FbRootWindow.hh ++++ b/src/FbRootWindow.hh +@@ -41,6 +41,7 @@ public: + int decorationDepth() const { return m_decorationDepth; } + Visual *decorationVisual() const { return m_decorationVisual; } + Colormap decorationColormap() const { return m_decorationColormap; } ++ int maxDepth() const { return m_maxDepth; } + + private: + Visual *m_visual; +@@ -49,6 +50,7 @@ private: + int m_decorationDepth; + Visual *m_decorationVisual; + Colormap m_decorationColormap; ++ int m_maxDepth; + }; + + #endif // FBROOTWINDOW_HH +diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc +index 48d6e87..42b81e7 100644 +--- a/src/FbWinFrame.cc ++++ b/src/FbWinFrame.cc +@@ -115,8 +115,8 @@ FbWinFrame::FbWinFrame(BScreen &screen, unsigned int client_depth, + m_state(state), + m_window(theme->screenNum(), state.x, state.y, state.width, state.height, s_mask, true, false, + client_depth, InputOutput, +- ((client_depth == 32) && (screen.rootWindow().depth() == 32) ? screen.rootWindow().visual() : CopyFromParent), +- ((client_depth == 32) && (screen.rootWindow().depth() == 32) ? screen.rootWindow().colormap() : CopyFromParent)), ++ (client_depth == screen.rootWindow().maxDepth() ? screen.rootWindow().visual() : CopyFromParent), ++ (client_depth == screen.rootWindow().maxDepth() ? screen.rootWindow().colormap() : CopyFromParent)), + m_layeritem(window(), *screen.layerManager().getLayer(ResourceLayer::NORMAL)), + m_titlebar(m_window, 0, 0, 100, 16, s_mask, false, false, + screen.rootWindow().decorationDepth(), InputOutput, +diff --git a/src/Screen.cc b/src/Screen.cc +index 2b5411d..94e4250 100644 +--- a/src/Screen.cc ++++ b/src/Screen.cc +@@ -297,7 +297,7 @@ BScreen::BScreen(FbTk::ResourceManager &rm, + "using visual 0x%lx, depth %d\n", + "informational message saying screen number (%d), visual (%lx), and colour depth (%d)").c_str(), + screenNumber(), XVisualIDFromVisual(rootWindow().visual()), +- rootWindow().depth()); ++ rootWindow().maxDepth()); + #endif // DEBUG + + FbTk::EventManager *evm = FbTk::EventManager::instance(); +-- +cgit v0.11.2 + + |