diff options
author | Gediminas Liktaras <gliktaras@gmail.com> | 2011-10-20 07:41:25 (GMT) |
---|---|---|
committer | Mathias Gumz <mathias gumz at gmail com> | 2011-10-20 07:41:55 (GMT) |
commit | 12f44680dfefde602f3387c6d385f4c5e68990e4 (patch) | |
tree | a340aa064066988b6425009d961a3f971f3d3d4f /src/FbWinFrame.cc | |
parent | b2b65dea7f766942f1a7a7e34b8815c5dbb996a8 (diff) | |
download | fluxbox-12f44680dfefde602f3387c6d385f4c5e68990e4.zip fluxbox-12f44680dfefde602f3387c6d385f4c5e68990e4.tar.bz2 |
Added support for ARGB visual, patch #3284774
fluxbox now properly displays windows that require ARGB visuals when
an external compositor is running. This was done by creating the
container window with the correct visual and colormap when needed.
Closes #2874629
Diffstat (limited to 'src/FbWinFrame.cc')
-rw-r--r-- | src/FbWinFrame.cc | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc index a8ee4d5..53cecf7 100644 --- a/src/FbWinFrame.cc +++ b/src/FbWinFrame.cc | |||
@@ -45,7 +45,8 @@ using std::string; | |||
45 | 45 | ||
46 | using FbTk::STLUtil::forAll; | 46 | using FbTk::STLUtil::forAll; |
47 | 47 | ||
48 | FbWinFrame::FbWinFrame(BScreen &screen, WindowState &state, | 48 | FbWinFrame::FbWinFrame(BScreen &screen, unsigned int client_depth, |
49 | WindowState &state, | ||
49 | FocusableTheme<FbWinFrameTheme> &theme): | 50 | FocusableTheme<FbWinFrameTheme> &theme): |
50 | m_screen(screen), | 51 | m_screen(screen), |
51 | m_theme(theme), | 52 | m_theme(theme), |
@@ -54,26 +55,41 @@ FbWinFrame::FbWinFrame(BScreen &screen, WindowState &state, | |||
54 | m_window(theme->screenNum(), state.x, state.y, state.width, state.height, | 55 | m_window(theme->screenNum(), state.x, state.y, state.width, state.height, |
55 | ButtonPressMask | ButtonReleaseMask | | 56 | ButtonPressMask | ButtonReleaseMask | |
56 | ButtonMotionMask | EnterWindowMask | | 57 | ButtonMotionMask | EnterWindowMask | |
57 | LeaveWindowMask, true), | 58 | LeaveWindowMask, true, false, |
59 | client_depth, InputOutput, | ||
60 | ((client_depth == 32) && (screen.rootWindow().depth() == 32) ? screen.rootWindow().visual() : CopyFromParent), | ||
61 | ((client_depth == 32) && (screen.rootWindow().depth() == 32) ? screen.rootWindow().colormap() : CopyFromParent)), | ||
58 | m_layeritem(window(), *screen.layerManager().getLayer(ResourceLayer::NORMAL)), | 62 | m_layeritem(window(), *screen.layerManager().getLayer(ResourceLayer::NORMAL)), |
59 | m_titlebar(m_window, 0, 0, 100, 16, | 63 | m_titlebar(m_window, 0, 0, 100, 16, |
60 | ButtonPressMask | ButtonReleaseMask | | 64 | ButtonPressMask | ButtonReleaseMask | |
61 | ButtonMotionMask | ExposureMask | | 65 | ButtonMotionMask | ExposureMask | |
62 | EnterWindowMask | LeaveWindowMask), | 66 | EnterWindowMask | LeaveWindowMask, |
67 | false, false, screen.rootWindow().decorationDepth(), InputOutput, | ||
68 | screen.rootWindow().decorationVisual(), | ||
69 | screen.rootWindow().decorationColormap()), | ||
63 | m_tab_container(m_titlebar), | 70 | m_tab_container(m_titlebar), |
64 | m_label(m_titlebar, m_theme->font(), FbTk::BiDiString("")), | 71 | m_label(m_titlebar, m_theme->font(), FbTk::BiDiString("")), |
65 | m_handle(m_window, 0, 0, 100, 5, | 72 | m_handle(m_window, 0, 0, 100, 5, |
66 | ButtonPressMask | ButtonReleaseMask | | 73 | ButtonPressMask | ButtonReleaseMask | |
67 | ButtonMotionMask | ExposureMask | | 74 | ButtonMotionMask | ExposureMask | |
68 | EnterWindowMask | LeaveWindowMask), | 75 | EnterWindowMask | LeaveWindowMask, |
76 | false, false, screen.rootWindow().decorationDepth(), InputOutput, | ||
77 | screen.rootWindow().decorationVisual(), | ||
78 | screen.rootWindow().decorationColormap()), | ||
69 | m_grip_right(m_handle, 0, 0, 10, 4, | 79 | m_grip_right(m_handle, 0, 0, 10, 4, |
70 | ButtonPressMask | ButtonReleaseMask | | 80 | ButtonPressMask | ButtonReleaseMask | |
71 | ButtonMotionMask | ExposureMask | | 81 | ButtonMotionMask | ExposureMask | |
72 | EnterWindowMask | LeaveWindowMask), | 82 | EnterWindowMask | LeaveWindowMask, |
83 | false, false, screen.rootWindow().decorationDepth(), InputOutput, | ||
84 | screen.rootWindow().decorationVisual(), | ||
85 | screen.rootWindow().decorationColormap()), | ||
73 | m_grip_left(m_handle, 0, 0, 10, 4, | 86 | m_grip_left(m_handle, 0, 0, 10, 4, |
74 | ButtonPressMask | ButtonReleaseMask | | 87 | ButtonPressMask | ButtonReleaseMask | |
75 | ButtonMotionMask | ExposureMask | | 88 | ButtonMotionMask | ExposureMask | |
76 | EnterWindowMask | LeaveWindowMask), | 89 | EnterWindowMask | LeaveWindowMask, |
90 | false, false, screen.rootWindow().decorationDepth(), InputOutput, | ||
91 | screen.rootWindow().decorationVisual(), | ||
92 | screen.rootWindow().decorationColormap()), | ||
77 | m_clientarea(m_window, 0, 0, 100, 100, | 93 | m_clientarea(m_window, 0, 0, 100, 100, |
78 | ButtonPressMask | ButtonReleaseMask | | 94 | ButtonPressMask | ButtonReleaseMask | |
79 | ButtonMotionMask | ExposureMask | | 95 | ButtonMotionMask | ExposureMask | |