summaryrefslogtreecommitdiffstats
path: root/source/xap/fluxbox/dcdde4d32c93d01df205bc06d7dfcbd356be031f.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/xap/fluxbox/dcdde4d32c93d01df205bc06d7dfcbd356be031f.patch')
-rw-r--r--source/xap/fluxbox/dcdde4d32c93d01df205bc06d7dfcbd356be031f.patch100
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 000000000..71b558e1c
--- /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
+
+