diff options
author | Mark Tiefenbruck <mark@fluxbox.org> | 2007-12-23 21:28:08 (GMT) |
---|---|---|
committer | Mark Tiefenbruck <mark@fluxbox.org> | 2007-12-23 21:28:08 (GMT) |
commit | 1b48b749b9a376c883ff4cc2ca3e807ac85cf21f (patch) | |
tree | 6ca960b0751df35295791728721bf12043c2c6c5 /src/Window.cc | |
parent | 0676161673d4347197c9d20fe3d613527633e597 (diff) | |
download | fluxbox-1b48b749b9a376c883ff4cc2ca3e807ac85cf21f.zip fluxbox-1b48b749b9a376c883ff4cc2ca3e807ac85cf21f.tar.bz2 |
make FbWinFrame aware of the decoration state
Diffstat (limited to 'src/Window.cc')
-rw-r--r-- | src/Window.cc | 79 |
1 files changed, 40 insertions, 39 deletions
diff --git a/src/Window.cc b/src/Window.cc index 6806afa..54f6915 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -1516,10 +1516,10 @@ void FluxboxWindow::setFullscreen(bool flag) { | |||
1516 | 1516 | ||
1517 | frame().setUseShape(true); | 1517 | frame().setUseShape(true); |
1518 | if (m_toggled_decos) { | 1518 | if (m_toggled_decos) { |
1519 | if (m_old_decoration_mask & (DECORM_TITLEBAR | DECORM_TAB)) | 1519 | if (m_old_decoration_mask & (FbWinFrame::DECORM_TITLEBAR | FbWinFrame::DECORM_TAB)) |
1520 | setDecorationMask(DECOR_NONE); | 1520 | setDecorationMask(FbWinFrame::DECOR_NONE); |
1521 | else | 1521 | else |
1522 | setDecorationMask(DECOR_NORMAL); | 1522 | setDecorationMask(FbWinFrame::DECOR_NORMAL); |
1523 | } else | 1523 | } else |
1524 | setDecorationMask(m_old_decoration_mask); | 1524 | setDecorationMask(m_old_decoration_mask); |
1525 | 1525 | ||
@@ -3032,6 +3032,7 @@ void FluxboxWindow::applyDecorations(bool initial) { | |||
3032 | client_move = true; | 3032 | client_move = true; |
3033 | } | 3033 | } |
3034 | 3034 | ||
3035 | frame().setDecorationMask(decorationMask()); | ||
3035 | frame().reconfigure(); | 3036 | frame().reconfigure(); |
3036 | if (client_move) | 3037 | if (client_move) |
3037 | Fluxbox::instance()->updateFrameExtents(*this); | 3038 | Fluxbox::instance()->updateFrameExtents(*this); |
@@ -3051,9 +3052,9 @@ void FluxboxWindow::toggleDecoration() { | |||
3051 | if (m_toggled_decos) { | 3052 | if (m_toggled_decos) { |
3052 | m_old_decoration_mask = decorationMask(); | 3053 | m_old_decoration_mask = decorationMask(); |
3053 | if (decorations.titlebar | decorations.tab) | 3054 | if (decorations.titlebar | decorations.tab) |
3054 | setDecorationMask(DECOR_NONE); | 3055 | setDecorationMask(FbWinFrame::DECOR_NONE); |
3055 | else | 3056 | else |
3056 | setDecorationMask(DECOR_NORMAL); | 3057 | setDecorationMask(FbWinFrame::DECOR_NORMAL); |
3057 | } else //revert back to old decoration | 3058 | } else //revert back to old decoration |
3058 | setDecorationMask(m_old_decoration_mask); | 3059 | setDecorationMask(m_old_decoration_mask); |
3059 | 3060 | ||
@@ -3062,42 +3063,42 @@ void FluxboxWindow::toggleDecoration() { | |||
3062 | unsigned int FluxboxWindow::decorationMask() const { | 3063 | unsigned int FluxboxWindow::decorationMask() const { |
3063 | unsigned int ret = 0; | 3064 | unsigned int ret = 0; |
3064 | if (decorations.titlebar) | 3065 | if (decorations.titlebar) |
3065 | ret |= DECORM_TITLEBAR; | 3066 | ret |= FbWinFrame::DECORM_TITLEBAR; |
3066 | if (decorations.handle) | 3067 | if (decorations.handle) |
3067 | ret |= DECORM_HANDLE; | 3068 | ret |= FbWinFrame::DECORM_HANDLE; |
3068 | if (decorations.border) | 3069 | if (decorations.border) |
3069 | ret |= DECORM_BORDER; | 3070 | ret |= FbWinFrame::DECORM_BORDER; |
3070 | if (decorations.iconify) | 3071 | if (decorations.iconify) |
3071 | ret |= DECORM_ICONIFY; | 3072 | ret |= FbWinFrame::DECORM_ICONIFY; |
3072 | if (decorations.maximize) | 3073 | if (decorations.maximize) |
3073 | ret |= DECORM_MAXIMIZE; | 3074 | ret |= FbWinFrame::DECORM_MAXIMIZE; |
3074 | if (decorations.close) | 3075 | if (decorations.close) |
3075 | ret |= DECORM_CLOSE; | 3076 | ret |= FbWinFrame::DECORM_CLOSE; |
3076 | if (decorations.menu) | 3077 | if (decorations.menu) |
3077 | ret |= DECORM_MENU; | 3078 | ret |= FbWinFrame::DECORM_MENU; |
3078 | if (decorations.sticky) | 3079 | if (decorations.sticky) |
3079 | ret |= DECORM_STICKY; | 3080 | ret |= FbWinFrame::DECORM_STICKY; |
3080 | if (decorations.shade) | 3081 | if (decorations.shade) |
3081 | ret |= DECORM_SHADE; | 3082 | ret |= FbWinFrame::DECORM_SHADE; |
3082 | if (decorations.tab) | 3083 | if (decorations.tab) |
3083 | ret |= DECORM_TAB; | 3084 | ret |= FbWinFrame::DECORM_TAB; |
3084 | if (decorations.enabled) | 3085 | if (decorations.enabled) |
3085 | ret |= DECORM_ENABLED; | 3086 | ret |= FbWinFrame::DECORM_ENABLED; |
3086 | return ret; | 3087 | return ret; |
3087 | } | 3088 | } |
3088 | 3089 | ||
3089 | void FluxboxWindow::setDecorationMask(unsigned int mask, bool apply) { | 3090 | void FluxboxWindow::setDecorationMask(unsigned int mask, bool apply) { |
3090 | decorations.titlebar = mask & DECORM_TITLEBAR; | 3091 | decorations.titlebar = mask & FbWinFrame::DECORM_TITLEBAR; |
3091 | decorations.handle = mask & DECORM_HANDLE; | 3092 | decorations.handle = mask & FbWinFrame::DECORM_HANDLE; |
3092 | decorations.border = mask & DECORM_BORDER; | 3093 | decorations.border = mask & FbWinFrame::DECORM_BORDER; |
3093 | decorations.iconify = mask & DECORM_ICONIFY; | 3094 | decorations.iconify = mask & FbWinFrame::DECORM_ICONIFY; |
3094 | decorations.maximize = mask & DECORM_MAXIMIZE; | 3095 | decorations.maximize = mask & FbWinFrame::DECORM_MAXIMIZE; |
3095 | decorations.close = mask & DECORM_CLOSE; | 3096 | decorations.close = mask & FbWinFrame::DECORM_CLOSE; |
3096 | decorations.menu = mask & DECORM_MENU; | 3097 | decorations.menu = mask & FbWinFrame::DECORM_MENU; |
3097 | decorations.sticky = mask & DECORM_STICKY; | 3098 | decorations.sticky = mask & FbWinFrame::DECORM_STICKY; |
3098 | decorations.shade = mask & DECORM_SHADE; | 3099 | decorations.shade = mask & FbWinFrame::DECORM_SHADE; |
3099 | decorations.tab = mask & DECORM_TAB; | 3100 | decorations.tab = mask & FbWinFrame::DECORM_TAB; |
3100 | decorations.enabled = mask & DECORM_ENABLED; | 3101 | decorations.enabled = mask & FbWinFrame::DECORM_ENABLED; |
3101 | // we don't want to do this during initialization | 3102 | // we don't want to do this during initialization |
3102 | if (apply) | 3103 | if (apply) |
3103 | applyDecorations(); | 3104 | applyDecorations(); |
@@ -3268,7 +3269,7 @@ void FluxboxWindow::doSnapping(int &orig_left, int &orig_top) { | |||
3268 | // we only care about the left/top etc that includes borders | 3269 | // we only care about the left/top etc that includes borders |
3269 | int borderW = 0; | 3270 | int borderW = 0; |
3270 | 3271 | ||
3271 | if (decorationMask() & (DECORM_BORDER|DECORM_HANDLE)) | 3272 | if (decorationMask() & (FbWinFrame::DECORM_BORDER|FbWinFrame::DECORM_HANDLE)) |
3272 | borderW = frame().window().borderWidth(); | 3273 | borderW = frame().window().borderWidth(); |
3273 | 3274 | ||
3274 | int top = orig_top; // orig include the borders | 3275 | int top = orig_top; // orig include the borders |
@@ -3340,7 +3341,7 @@ void FluxboxWindow::doSnapping(int &orig_left, int &orig_top) { | |||
3340 | if ((*it) == this) | 3341 | if ((*it) == this) |
3341 | continue; // skip myself | 3342 | continue; // skip myself |
3342 | 3343 | ||
3343 | bw = (*it)->decorationMask() & (DECORM_BORDER|DECORM_HANDLE) ? | 3344 | bw = (*it)->decorationMask() & (FbWinFrame::DECORM_BORDER|FbWinFrame::DECORM_HANDLE) ? |
3344 | (*it)->frame().window().borderWidth() : 0; | 3345 | (*it)->frame().window().borderWidth() : 0; |
3345 | 3346 | ||
3346 | snapToWindow(dx, dy, left, right, top, bottom, | 3347 | snapToWindow(dx, dy, left, right, top, bottom, |
@@ -4106,17 +4107,17 @@ void FluxboxWindow::associateClient(WinClient &client) { | |||
4106 | 4107 | ||
4107 | int FluxboxWindow::getDecoMaskFromString(const string &str_label) { | 4108 | int FluxboxWindow::getDecoMaskFromString(const string &str_label) { |
4108 | if (strcasecmp(str_label.c_str(), "NONE") == 0) | 4109 | if (strcasecmp(str_label.c_str(), "NONE") == 0) |
4109 | return DECOR_NONE; | 4110 | return FbWinFrame::DECOR_NONE; |
4110 | if (strcasecmp(str_label.c_str(), "NORMAL") == 0) | 4111 | if (strcasecmp(str_label.c_str(), "NORMAL") == 0) |
4111 | return DECOR_NORMAL; | 4112 | return FbWinFrame::DECOR_NORMAL; |
4112 | if (strcasecmp(str_label.c_str(), "TINY") == 0) | 4113 | if (strcasecmp(str_label.c_str(), "TINY") == 0) |
4113 | return DECOR_TINY; | 4114 | return FbWinFrame::DECOR_TINY; |
4114 | if (strcasecmp(str_label.c_str(), "TOOL") == 0) | 4115 | if (strcasecmp(str_label.c_str(), "TOOL") == 0) |
4115 | return DECOR_TOOL; | 4116 | return FbWinFrame::DECOR_TOOL; |
4116 | if (strcasecmp(str_label.c_str(), "BORDER") == 0) | 4117 | if (strcasecmp(str_label.c_str(), "BORDER") == 0) |
4117 | return DECOR_BORDER; | 4118 | return FbWinFrame::DECOR_BORDER; |
4118 | if (strcasecmp(str_label.c_str(), "TAB") == 0) | 4119 | if (strcasecmp(str_label.c_str(), "TAB") == 0) |
4119 | return DECOR_TAB; | 4120 | return FbWinFrame::DECOR_TAB; |
4120 | int mask = -1; | 4121 | int mask = -1; |
4121 | if (str_label.size() > 1 && str_label[0] == '0' && str_label[1] == 'x' || | 4122 | if (str_label.size() > 1 && str_label[0] == '0' && str_label[1] == 'x' || |
4122 | str_label.size() > 0 && isdigit(str_label[0])) | 4123 | str_label.size() > 0 && isdigit(str_label[0])) |
@@ -4158,7 +4159,7 @@ void FluxboxWindow::setWindowType(Focusable::WindowType type) { | |||
4158 | */ | 4159 | */ |
4159 | setFocusHidden(true); | 4160 | setFocusHidden(true); |
4160 | setIconHidden(true); | 4161 | setIconHidden(true); |
4161 | setDecorationMask(DECOR_NONE); | 4162 | setDecorationMask(FbWinFrame::DECOR_NONE); |
4162 | moveToLayer(::Layer::DOCK); | 4163 | moveToLayer(::Layer::DOCK); |
4163 | break; | 4164 | break; |
4164 | case Focusable::TYPE_DESKTOP: | 4165 | case Focusable::TYPE_DESKTOP: |
@@ -4171,7 +4172,7 @@ void FluxboxWindow::setWindowType(Focusable::WindowType type) { | |||
4171 | setFocusHidden(true); | 4172 | setFocusHidden(true); |
4172 | setIconHidden(true); | 4173 | setIconHidden(true); |
4173 | moveToLayer(::Layer::DESKTOP); | 4174 | moveToLayer(::Layer::DESKTOP); |
4174 | setDecorationMask(DECOR_NONE); | 4175 | setDecorationMask(FbWinFrame::DECOR_NONE); |
4175 | setTabable(false); | 4176 | setTabable(false); |
4176 | setMovable(false); | 4177 | setMovable(false); |
4177 | setResizable(false); | 4178 | setResizable(false); |
@@ -4183,7 +4184,7 @@ void FluxboxWindow::setWindowType(Focusable::WindowType type) { | |||
4183 | * window is a splash screen displayed as an application | 4184 | * window is a splash screen displayed as an application |
4184 | * is starting up. | 4185 | * is starting up. |
4185 | */ | 4186 | */ |
4186 | setDecorationMask(DECOR_NONE); | 4187 | setDecorationMask(FbWinFrame::DECOR_NONE); |
4187 | setFocusHidden(true); | 4188 | setFocusHidden(true); |
4188 | setIconHidden(true); | 4189 | setIconHidden(true); |
4189 | setMovable(false); | 4190 | setMovable(false); |
@@ -4200,7 +4201,7 @@ void FluxboxWindow::setWindowType(Focusable::WindowType type) { | |||
4200 | * application). Windows of this type may set the | 4201 | * application). Windows of this type may set the |
4201 | * WM_TRANSIENT_FOR hint indicating the main application window. | 4202 | * WM_TRANSIENT_FOR hint indicating the main application window. |
4202 | */ | 4203 | */ |
4203 | setDecorationMask(DECOR_TOOL); | 4204 | setDecorationMask(FbWinFrame::DECOR_TOOL); |
4204 | setIconHidden(true); | 4205 | setIconHidden(true); |
4205 | moveToLayer(::Layer::ABOVE_DOCK); | 4206 | moveToLayer(::Layer::ABOVE_DOCK); |
4206 | break; | 4207 | break; |