diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/FbWinFrame.cc | 59 | ||||
-rw-r--r-- | src/FbWinFrame.hh | 59 | ||||
-rw-r--r-- | src/Window.cc | 4 |
3 files changed, 68 insertions, 54 deletions
diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc index 9136d20..3a3dc86 100644 --- a/src/FbWinFrame.cc +++ b/src/FbWinFrame.cc | |||
@@ -78,11 +78,9 @@ FbWinFrame::FbWinFrame(BScreen &screen, | |||
78 | ButtonMotionMask | ExposureMask | | 78 | ButtonMotionMask | ExposureMask | |
79 | EnterWindowMask | LeaveWindowMask), | 79 | EnterWindowMask | LeaveWindowMask), |
80 | m_bevel(1), | 80 | m_bevel(1), |
81 | m_decoration_mask(DECOR_NORMAL), | ||
82 | m_use_titlebar(true), | 81 | m_use_titlebar(true), |
83 | m_use_tabs(true), | 82 | m_use_tabs(true), |
84 | m_use_handle(true), | 83 | m_use_handle(true), |
85 | m_focused(false), | ||
86 | m_visible(false), | 84 | m_visible(false), |
87 | m_button_pm(0), | 85 | m_button_pm(0), |
88 | m_tabmode(screen.getDefaultInternalTabs()?INTERNAL:EXTERNAL), | 86 | m_tabmode(screen.getDefaultInternalTabs()?INTERNAL:EXTERNAL), |
@@ -91,7 +89,6 @@ FbWinFrame::FbWinFrame(BScreen &screen, | |||
91 | m_need_render(true), | 89 | m_need_render(true), |
92 | m_button_size(1), | 90 | m_button_size(1), |
93 | m_height_before_shade(1), | 91 | m_height_before_shade(1), |
94 | m_shaded(false), | ||
95 | m_focused_alpha(AlphaAcc(*theme.focusedTheme(), &FbWinFrameTheme::alpha)), | 92 | m_focused_alpha(AlphaAcc(*theme.focusedTheme(), &FbWinFrameTheme::alpha)), |
96 | m_unfocused_alpha(AlphaAcc(*theme.unfocusedTheme(), &FbWinFrameTheme::alpha)), | 93 | m_unfocused_alpha(AlphaAcc(*theme.unfocusedTheme(), &FbWinFrameTheme::alpha)), |
97 | m_shape(m_window, theme->shapePlace()), | 94 | m_shape(m_window, theme->shapePlace()), |
@@ -203,8 +200,8 @@ void FbWinFrame::shade() { | |||
203 | return; | 200 | return; |
204 | 201 | ||
205 | // toggle shade | 202 | // toggle shade |
206 | m_shaded = !m_shaded; | 203 | m_state.shaded = !m_state.shaded; |
207 | if (m_shaded) { // i.e. should be shaded now | 204 | if (m_state.shaded) { // i.e. should be shaded now |
208 | m_height_before_shade = m_window.height(); | 205 | m_height_before_shade = m_window.height(); |
209 | m_window.resize(m_window.width(), m_titlebar.height()); | 206 | m_window.resize(m_window.width(), m_titlebar.height()); |
210 | alignTabs(); | 207 | alignTabs(); |
@@ -250,7 +247,7 @@ void FbWinFrame::moveResize(int x, int y, unsigned int width, unsigned int heigh | |||
250 | if (move && x == window().x() && y == window().y()) | 247 | if (move && x == window().x() && y == window().y()) |
251 | move = false; | 248 | move = false; |
252 | 249 | ||
253 | if (resize && (m_shaded || width == FbWinFrame::width() && | 250 | if (resize && (m_state.shaded || width == FbWinFrame::width() && |
254 | height == FbWinFrame::height())) | 251 | height == FbWinFrame::height())) |
255 | resize = false; | 252 | resize = false; |
256 | 253 | ||
@@ -412,7 +409,7 @@ void FbWinFrame::alignTabs() { | |||
412 | 409 | ||
413 | void FbWinFrame::notifyMoved(bool clear) { | 410 | void FbWinFrame::notifyMoved(bool clear) { |
414 | // not important if no alpha... | 411 | // not important if no alpha... |
415 | unsigned char alpha = getAlpha(m_focused); | 412 | unsigned char alpha = getAlpha(m_state.focused); |
416 | if (alpha == 255) | 413 | if (alpha == 255) |
417 | return; | 414 | return; |
418 | 415 | ||
@@ -469,14 +466,14 @@ void FbWinFrame::clearAll() { | |||
469 | } | 466 | } |
470 | 467 | ||
471 | void FbWinFrame::setFocus(bool newvalue) { | 468 | void FbWinFrame::setFocus(bool newvalue) { |
472 | if (m_focused == newvalue) | 469 | if (m_state.focused == newvalue) |
473 | return; | 470 | return; |
474 | 471 | ||
475 | m_focused = newvalue; | 472 | m_state.focused = newvalue; |
476 | 473 | ||
477 | if (FbTk::Transparent::haveRender() && | 474 | if (FbTk::Transparent::haveRender() && |
478 | getAlpha(true) != getAlpha(false)) { // different alpha for focused and unfocused | 475 | getAlpha(true) != getAlpha(false)) { // different alpha for focused and unfocused |
479 | unsigned char alpha = getAlpha(m_focused); | 476 | unsigned char alpha = getAlpha(m_state.focused); |
480 | if (FbTk::Transparent::haveComposite()) { | 477 | if (FbTk::Transparent::haveComposite()) { |
481 | m_tab_container.setAlpha(255); | 478 | m_tab_container.setAlpha(255); |
482 | m_window.setOpaque(alpha); | 479 | m_window.setOpaque(alpha); |
@@ -498,12 +495,12 @@ void FbWinFrame::setAlpha(bool focused, unsigned char alpha) { | |||
498 | else | 495 | else |
499 | m_unfocused_alpha = alpha; | 496 | m_unfocused_alpha = alpha; |
500 | 497 | ||
501 | if (m_focused == focused) | 498 | if (m_state.focused == focused) |
502 | applyAlpha(); | 499 | applyAlpha(); |
503 | } | 500 | } |
504 | 501 | ||
505 | void FbWinFrame::applyAlpha() { | 502 | void FbWinFrame::applyAlpha() { |
506 | unsigned char alpha = getAlpha(m_focused); | 503 | unsigned char alpha = getAlpha(m_state.focused); |
507 | if (FbTk::Transparent::haveComposite()) | 504 | if (FbTk::Transparent::haveComposite()) |
508 | m_window.setOpaque(alpha); | 505 | m_window.setOpaque(alpha); |
509 | else { | 506 | else { |
@@ -845,7 +842,7 @@ void FbWinFrame::reconfigure() { | |||
845 | m_bevel = theme()->bevelWidth(); | 842 | m_bevel = theme()->bevelWidth(); |
846 | setBorderWidth(); | 843 | setBorderWidth(); |
847 | 844 | ||
848 | if (m_decoration_mask & DECORM_HANDLE && theme()->handleWidth() != 0) | 845 | if (m_state.deco_mask & DECORM_HANDLE && theme()->handleWidth() != 0) |
849 | showHandle(); | 846 | showHandle(); |
850 | else | 847 | else |
851 | hideHandle(); | 848 | hideHandle(); |
@@ -889,7 +886,7 @@ void FbWinFrame::reconfigure() { | |||
889 | } | 886 | } |
890 | 887 | ||
891 | // leave client+grips alone if we're shaded (it'll get fixed when we unshade) | 888 | // leave client+grips alone if we're shaded (it'll get fixed when we unshade) |
892 | if (!m_shaded) { | 889 | if (!m_state.shaded) { |
893 | int client_top = 0; | 890 | int client_top = 0; |
894 | int client_height = m_window.height(); | 891 | int client_height = m_window.height(); |
895 | if (m_use_titlebar) { | 892 | if (m_use_titlebar) { |
@@ -945,7 +942,7 @@ void FbWinFrame::reconfigure() { | |||
945 | // update transparency settings | 942 | // update transparency settings |
946 | if (FbTk::Transparent::haveRender()) { | 943 | if (FbTk::Transparent::haveRender()) { |
947 | unsigned char alpha = | 944 | unsigned char alpha = |
948 | getAlpha(m_focused); | 945 | getAlpha(m_state.focused); |
949 | if (FbTk::Transparent::haveComposite()) { | 946 | if (FbTk::Transparent::haveComposite()) { |
950 | m_tab_container.setAlpha(255); | 947 | m_tab_container.setAlpha(255); |
951 | m_window.setOpaque(alpha); | 948 | m_window.setOpaque(alpha); |
@@ -1160,7 +1157,7 @@ void FbWinFrame::applyTitlebar() { | |||
1160 | getCurrentFocusPixmap(label_pm, title_pm, | 1157 | getCurrentFocusPixmap(label_pm, title_pm, |
1161 | label_color, title_color); | 1158 | label_color, title_color); |
1162 | 1159 | ||
1163 | unsigned char alpha = getAlpha (m_focused); | 1160 | unsigned char alpha = getAlpha (m_state.focused); |
1164 | m_titlebar.setAlpha(alpha); | 1161 | m_titlebar.setAlpha(alpha); |
1165 | m_label.setAlpha(alpha); | 1162 | m_label.setAlpha(alpha); |
1166 | 1163 | ||
@@ -1212,12 +1209,12 @@ void FbWinFrame::renderHandles() { | |||
1212 | 1209 | ||
1213 | void FbWinFrame::applyHandles() { | 1210 | void FbWinFrame::applyHandles() { |
1214 | 1211 | ||
1215 | unsigned char alpha = getAlpha (m_focused); | 1212 | unsigned char alpha = getAlpha(m_state.focused); |
1216 | m_handle.setAlpha(alpha); | 1213 | m_handle.setAlpha(alpha); |
1217 | m_grip_left.setAlpha(alpha); | 1214 | m_grip_left.setAlpha(alpha); |
1218 | m_grip_right.setAlpha(alpha); | 1215 | m_grip_right.setAlpha(alpha); |
1219 | 1216 | ||
1220 | if (m_focused) { | 1217 | if (m_state.focused) { |
1221 | 1218 | ||
1222 | if (m_handle_focused_pm) { | 1219 | if (m_handle_focused_pm) { |
1223 | m_handle.setBackgroundPixmap(m_handle_focused_pm); | 1220 | m_handle.setBackgroundPixmap(m_handle_focused_pm); |
@@ -1302,7 +1299,7 @@ void FbWinFrame::init() { | |||
1302 | 1299 | ||
1303 | m_clientarea.setBorderWidth(0); | 1300 | m_clientarea.setBorderWidth(0); |
1304 | m_label.setBorderWidth(0); | 1301 | m_label.setBorderWidth(0); |
1305 | m_shaded = false; | 1302 | m_state.shaded = false; |
1306 | 1303 | ||
1307 | setTabMode(NOTSET); | 1304 | setTabMode(NOTSET); |
1308 | 1305 | ||
@@ -1327,13 +1324,13 @@ void FbWinFrame::applyButton(FbTk::Button &btn) { | |||
1327 | else | 1324 | else |
1328 | btn.setPressedColor(m_button_pressed_color); | 1325 | btn.setPressedColor(m_button_pressed_color); |
1329 | 1326 | ||
1330 | Pixmap pm = m_focused ? m_button_pm : m_button_unfocused_pm; | 1327 | Pixmap pm = m_state.focused ? m_button_pm : m_button_unfocused_pm; |
1331 | btn.setAlpha(getAlpha(m_focused)); | 1328 | btn.setAlpha(getAlpha(m_state.focused)); |
1332 | btn.setGC(theme()->buttonPicGC()); | 1329 | btn.setGC(theme()->buttonPicGC()); |
1333 | if (pm) | 1330 | if (pm) |
1334 | btn.setBackgroundPixmap(pm); | 1331 | btn.setBackgroundPixmap(pm); |
1335 | else | 1332 | else |
1336 | btn.setBackgroundColor(m_focused ? m_button_color | 1333 | btn.setBackgroundColor(m_state.focused ? m_button_color |
1337 | : m_button_unfocused_color); | 1334 | : m_button_unfocused_color); |
1338 | } | 1335 | } |
1339 | 1336 | ||
@@ -1355,7 +1352,7 @@ void FbWinFrame::render(const FbTk::Texture &tex, FbTk::Color &col, Pixmap &pm, | |||
1355 | 1352 | ||
1356 | void FbWinFrame::getCurrentFocusPixmap(Pixmap &label_pm, Pixmap &title_pm, | 1353 | void FbWinFrame::getCurrentFocusPixmap(Pixmap &label_pm, Pixmap &title_pm, |
1357 | FbTk::Color &label_color, FbTk::Color &title_color) { | 1354 | FbTk::Color &label_color, FbTk::Color &title_color) { |
1358 | if (m_focused) { | 1355 | if (m_state.focused) { |
1359 | if (m_label_focused_pm != 0) | 1356 | if (m_label_focused_pm != 0) |
1360 | label_pm = m_label_focused_pm; | 1357 | label_pm = m_label_focused_pm; |
1361 | else | 1358 | else |
@@ -1379,12 +1376,12 @@ void FbWinFrame::getCurrentFocusPixmap(Pixmap &label_pm, Pixmap &title_pm, | |||
1379 | } | 1376 | } |
1380 | 1377 | ||
1381 | void FbWinFrame::applyTabContainer() { | 1378 | void FbWinFrame::applyTabContainer() { |
1382 | m_tab_container.setAlpha(getAlpha(m_focused)); | 1379 | m_tab_container.setAlpha(getAlpha(m_state.focused)); |
1383 | 1380 | ||
1384 | // do the parent container | 1381 | // do the parent container |
1385 | Pixmap tabcontainer_pm = None; | 1382 | Pixmap tabcontainer_pm = None; |
1386 | FbTk::Color *tabcontainer_color = NULL; | 1383 | FbTk::Color *tabcontainer_color = NULL; |
1387 | if (m_focused) { | 1384 | if (m_state.focused) { |
1388 | if (m_tabcontainer_focused_pm != 0) | 1385 | if (m_tabcontainer_focused_pm != 0) |
1389 | tabcontainer_pm = m_tabcontainer_focused_pm; | 1386 | tabcontainer_pm = m_tabcontainer_focused_pm; |
1390 | else | 1387 | else |
@@ -1421,13 +1418,13 @@ void FbWinFrame::applyDecorations() { | |||
1421 | // tab deocration only affects if we're external | 1418 | // tab deocration only affects if we're external |
1422 | // must do before the setTabMode in case it goes | 1419 | // must do before the setTabMode in case it goes |
1423 | // to external and is meant to be hidden | 1420 | // to external and is meant to be hidden |
1424 | if (m_decoration_mask & DECORM_TAB) | 1421 | if (m_state.deco_mask & DECORM_TAB) |
1425 | client_move |= showTabs(); | 1422 | client_move |= showTabs(); |
1426 | else | 1423 | else |
1427 | client_move |= hideTabs(); | 1424 | client_move |= hideTabs(); |
1428 | 1425 | ||
1429 | // we rely on frame not doing anything if it is already shown/hidden | 1426 | // we rely on frame not doing anything if it is already shown/hidden |
1430 | if (m_decoration_mask & DECORM_TITLEBAR) { | 1427 | if (m_state.deco_mask & DECORM_TITLEBAR) { |
1431 | client_move |= showTitlebar(); | 1428 | client_move |= showTitlebar(); |
1432 | if (m_screen.getDefaultInternalTabs()) | 1429 | if (m_screen.getDefaultInternalTabs()) |
1433 | client_move |= setTabMode(INTERNAL); | 1430 | client_move |= setTabMode(INTERNAL); |
@@ -1435,11 +1432,11 @@ void FbWinFrame::applyDecorations() { | |||
1435 | client_move |= setTabMode(EXTERNAL); | 1432 | client_move |= setTabMode(EXTERNAL); |
1436 | } else { | 1433 | } else { |
1437 | client_move |= hideTitlebar(); | 1434 | client_move |= hideTitlebar(); |
1438 | if (m_decoration_mask & DECORM_TAB) | 1435 | if (m_state.deco_mask & DECORM_TAB) |
1439 | client_move |= setTabMode(EXTERNAL); | 1436 | client_move |= setTabMode(EXTERNAL); |
1440 | } | 1437 | } |
1441 | 1438 | ||
1442 | if (m_decoration_mask & DECORM_HANDLE) | 1439 | if (m_state.deco_mask & DECORM_HANDLE) |
1443 | client_move |= showHandle(); | 1440 | client_move |= showHandle(); |
1444 | else | 1441 | else |
1445 | client_move |= hideHandle(); | 1442 | client_move |= hideHandle(); |
@@ -1461,7 +1458,7 @@ void FbWinFrame::applyDecorations() { | |||
1461 | 1458 | ||
1462 | bool FbWinFrame::setBorderWidth(bool do_move) { | 1459 | bool FbWinFrame::setBorderWidth(bool do_move) { |
1463 | unsigned int border_width = theme()->border().width(); | 1460 | unsigned int border_width = theme()->border().width(); |
1464 | unsigned int win_bw = m_decoration_mask & DECORM_BORDER ? border_width : 0; | 1461 | unsigned int win_bw = m_state.deco_mask & DECORM_BORDER ? border_width : 0; |
1465 | 1462 | ||
1466 | if (border_width && | 1463 | if (border_width && |
1467 | theme()->border().color().pixel() != window().borderColor()) { | 1464 | theme()->border().color().pixel() != window().borderColor()) { |
@@ -1598,7 +1595,7 @@ void FbWinFrame::gravityTranslate(int &x, int &y, | |||
1598 | } | 1595 | } |
1599 | 1596 | ||
1600 | unsigned int FbWinFrame::normalHeight() const { | 1597 | unsigned int FbWinFrame::normalHeight() const { |
1601 | if (m_shaded) | 1598 | if (m_state.shaded) |
1602 | return m_height_before_shade; | 1599 | return m_height_before_shade; |
1603 | return height(); | 1600 | return height(); |
1604 | } | 1601 | } |
diff --git a/src/FbWinFrame.hh b/src/FbWinFrame.hh index 3d61860..6d8249a 100644 --- a/src/FbWinFrame.hh +++ b/src/FbWinFrame.hh | |||
@@ -95,25 +95,38 @@ public: | |||
95 | DECOR_TAB = DECORM_BORDER|DECORM_MENU|DECORM_TAB | 95 | DECOR_TAB = DECORM_BORDER|DECORM_MENU|DECORM_TAB |
96 | }; | 96 | }; |
97 | 97 | ||
98 | typedef struct SizeHints { | 98 | class SizeHints { |
99 | public: | ||
100 | SizeHints(): | ||
101 | min_width(1), max_width(0), min_height(1), max_height(0), | ||
102 | width_inc(1), height_inc(1), base_width(0), base_height(0), | ||
103 | min_aspect_x(0), max_aspect_x(0), | ||
104 | min_aspect_y(0), max_aspect_y(0) { } | ||
105 | |||
99 | void apply(unsigned int &w, unsigned int &h, | 106 | void apply(unsigned int &w, unsigned int &h, |
100 | bool maximizing = false) const; | 107 | bool maximizing = false) const; |
101 | bool valid(unsigned int width, unsigned int height) const; | 108 | bool valid(unsigned int width, unsigned int height) const; |
102 | void displaySize(unsigned int &i, unsigned int &j, | 109 | void displaySize(unsigned int &i, unsigned int &j, |
103 | unsigned int width, unsigned int height) const; | 110 | unsigned int width, unsigned int height) const; |
104 | unsigned int min_width; | 111 | |
105 | unsigned int max_width; | 112 | unsigned int min_width, max_width, min_height, max_height, |
106 | unsigned int min_height; | 113 | width_inc, height_inc, base_width, base_height, |
107 | unsigned int max_height; | 114 | min_aspect_x, max_aspect_x, min_aspect_y, max_aspect_y; |
108 | unsigned int width_inc; | 115 | }; |
109 | unsigned int height_inc; | 116 | |
110 | unsigned int min_aspect_x; | 117 | class State { |
111 | unsigned int max_aspect_x; | 118 | public: |
112 | unsigned int min_aspect_y; | 119 | State(): |
113 | unsigned int max_aspect_y; | 120 | size_hints(), |
114 | unsigned int base_width; | 121 | deco_mask(DECOR_NORMAL), |
115 | unsigned int base_height; | 122 | focused(false), |
116 | } SizeHints; | 123 | shaded(false), fullscreen(false), maximized(0) { } |
124 | |||
125 | SizeHints size_hints; | ||
126 | unsigned int deco_mask; | ||
127 | bool focused, shaded, fullscreen; | ||
128 | int maximized; | ||
129 | }; | ||
117 | 130 | ||
118 | /// create a top level window | 131 | /// create a top level window |
119 | FbWinFrame(BScreen &screen, FocusableTheme<FbWinFrameTheme> &theme, | 132 | FbWinFrame(BScreen &screen, FocusableTheme<FbWinFrameTheme> &theme, |
@@ -162,6 +175,9 @@ public: | |||
162 | 175 | ||
163 | /// set focus/unfocus style | 176 | /// set focus/unfocus style |
164 | void setFocus(bool newvalue); | 177 | void setFocus(bool newvalue); |
178 | void setFullscreen(bool value) { m_state.fullscreen = value; } | ||
179 | void setMaximized(int value) { m_state.maximized = value; } | ||
180 | |||
165 | void setFocusTitle(const std::string &str) { m_label.setText(str); } | 181 | void setFocusTitle(const std::string &str) { m_label.setText(str); } |
166 | bool setTabMode(TabMode tabmode); | 182 | bool setTabMode(TabMode tabmode); |
167 | void updateTabProperties() { alignTabs(); } | 183 | void updateTabProperties() { alignTabs(); } |
@@ -205,14 +221,14 @@ public: | |||
205 | /// remove any handler for the windows | 221 | /// remove any handler for the windows |
206 | void removeEventHandler(); | 222 | void removeEventHandler(); |
207 | 223 | ||
208 | const SizeHints &sizeHints() const { return m_size_hints; } | 224 | const SizeHints &sizeHints() const { return m_state.size_hints; } |
209 | void setSizeHints(const SizeHints &hint) { m_size_hints = hint; } | 225 | void setSizeHints(const SizeHints &hint) { m_state.size_hints = hint; } |
210 | 226 | ||
211 | void applySizeHints(unsigned int &width, unsigned int &height, | 227 | void applySizeHints(unsigned int &width, unsigned int &height, |
212 | bool maximizing = false) const; | 228 | bool maximizing = false) const; |
213 | void displaySize(unsigned int width, unsigned int height) const; | 229 | void displaySize(unsigned int width, unsigned int height) const; |
214 | 230 | ||
215 | void setDecorationMask(unsigned int mask) { m_decoration_mask = mask; } | 231 | void setDecorationMask(unsigned int mask) { m_state.deco_mask = mask; } |
216 | void applyDecorations(); | 232 | void applyDecorations(); |
217 | 233 | ||
218 | // this function translates its arguments according to win_gravity | 234 | // this function translates its arguments according to win_gravity |
@@ -271,8 +287,8 @@ public: | |||
271 | FbTk::FbWindow &gripLeft() { return m_grip_left; } | 287 | FbTk::FbWindow &gripLeft() { return m_grip_left; } |
272 | const FbTk::FbWindow &gripRight() const { return m_grip_right; } | 288 | const FbTk::FbWindow &gripRight() const { return m_grip_right; } |
273 | FbTk::FbWindow &gripRight() { return m_grip_right; } | 289 | FbTk::FbWindow &gripRight() { return m_grip_right; } |
274 | bool focused() const { return m_focused; } | 290 | bool focused() const { return m_state.focused; } |
275 | bool isShaded() const { return m_shaded; } | 291 | bool isShaded() const { return m_state.shaded; } |
276 | FocusableTheme<FbWinFrameTheme> &theme() const { return m_theme; } | 292 | FocusableTheme<FbWinFrameTheme> &theme() const { return m_theme; } |
277 | /// @return titlebar height | 293 | /// @return titlebar height |
278 | unsigned int titlebarHeight() const { return (m_use_titlebar?m_titlebar.height()+m_titlebar.borderWidth():0); } | 294 | unsigned int titlebarHeight() const { return (m_use_titlebar?m_titlebar.height()+m_titlebar.borderWidth():0); } |
@@ -370,11 +386,9 @@ private: | |||
370 | m_buttons_right; ///< buttons to the right | 386 | m_buttons_right; ///< buttons to the right |
371 | typedef std::list<FbTk::TextButton *> LabelList; | 387 | typedef std::list<FbTk::TextButton *> LabelList; |
372 | int m_bevel; ///< bevel between titlebar items and titlebar | 388 | int m_bevel; ///< bevel between titlebar items and titlebar |
373 | unsigned int m_decoration_mask; ///< bitmask of applied decorations | ||
374 | bool m_use_titlebar; ///< if we should use titlebar | 389 | bool m_use_titlebar; ///< if we should use titlebar |
375 | bool m_use_tabs; ///< if we should use tabs (turns them off in external mode only) | 390 | bool m_use_tabs; ///< if we should use tabs (turns them off in external mode only) |
376 | bool m_use_handle; ///< if we should use handle | 391 | bool m_use_handle; ///< if we should use handle |
377 | bool m_focused; ///< focused/unfocused mode | ||
378 | bool m_visible; ///< if we are currently showing | 392 | bool m_visible; ///< if we are currently showing |
379 | ///< do we use screen or window alpha settings ? (0 = window, 1 = default, 2 = default and window never set) | 393 | ///< do we use screen or window alpha settings ? (0 = window, 1 = default, 2 = default and window never set) |
380 | 394 | ||
@@ -419,12 +433,11 @@ private: | |||
419 | // last gravity that this window was *actively* placed with | 433 | // last gravity that this window was *actively* placed with |
420 | int m_active_gravity; | 434 | int m_active_gravity; |
421 | unsigned int m_active_orig_client_bw; | 435 | unsigned int m_active_orig_client_bw; |
422 | SizeHints m_size_hints; | 436 | State m_state; |
423 | 437 | ||
424 | bool m_need_render; | 438 | bool m_need_render; |
425 | int m_button_size; ///< size for all titlebar buttons | 439 | int m_button_size; ///< size for all titlebar buttons |
426 | unsigned int m_height_before_shade; ///< height before shade, so we can restore it when we unshade | 440 | unsigned int m_height_before_shade; ///< height before shade, so we can restore it when we unshade |
427 | bool m_shaded; ///< wheter we're shaded or not | ||
428 | /// alpha values | 441 | /// alpha values |
429 | typedef FbTk::ConstObjectAccessor<unsigned char, FbWinFrameTheme> AlphaAcc; | 442 | typedef FbTk::ConstObjectAccessor<unsigned char, FbWinFrameTheme> AlphaAcc; |
430 | FbTk::DefaultValue<unsigned char, AlphaAcc> m_focused_alpha; | 443 | FbTk::DefaultValue<unsigned char, AlphaAcc> m_focused_alpha; |
diff --git a/src/Window.cc b/src/Window.cc index a5ec2dd..866e160 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -1526,6 +1526,7 @@ void FluxboxWindow::setFullscreen(bool flag) { | |||
1526 | sendConfigureNotify(); | 1526 | sendConfigureNotify(); |
1527 | 1527 | ||
1528 | fullscreen = true; | 1528 | fullscreen = true; |
1529 | frame().setFullscreen(true); | ||
1529 | 1530 | ||
1530 | setFullscreenLayer(); | 1531 | setFullscreenLayer(); |
1531 | if (!isFocused()) | 1532 | if (!isFocused()) |
@@ -1534,6 +1535,7 @@ void FluxboxWindow::setFullscreen(bool flag) { | |||
1534 | } else if (!flag && isFullscreen()) { | 1535 | } else if (!flag && isFullscreen()) { |
1535 | 1536 | ||
1536 | fullscreen = false; | 1537 | fullscreen = false; |
1538 | frame().setFullscreen(false); | ||
1537 | 1539 | ||
1538 | frame().setUseShape(true); | 1540 | frame().setUseShape(true); |
1539 | if (m_toggled_decos) { | 1541 | if (m_toggled_decos) { |
@@ -1668,6 +1670,7 @@ void FluxboxWindow::setMaximizedState(int type) { | |||
1668 | maximized ^= MAX_HORZ; | 1670 | maximized ^= MAX_HORZ; |
1669 | } | 1671 | } |
1670 | 1672 | ||
1673 | frame().setMaximized(maximized); | ||
1671 | // ensure we apply the sizehints here, otherwise some | 1674 | // ensure we apply the sizehints here, otherwise some |
1672 | // apps (eg xterm) end up a little bit .. crappy (visually) | 1675 | // apps (eg xterm) end up a little bit .. crappy (visually) |
1673 | 1676 | ||
@@ -3379,6 +3382,7 @@ void FluxboxWindow::startResizing(int x, int y, ResizeDirection dir) { | |||
3379 | 3382 | ||
3380 | resizing = true; | 3383 | resizing = true; |
3381 | maximized = MAX_NONE; | 3384 | maximized = MAX_NONE; |
3385 | frame().setMaximized(maximized); | ||
3382 | 3386 | ||
3383 | const Cursor& cursor = (m_resize_corner == LEFTTOP) ? frame().theme()->upperLeftAngleCursor() : | 3387 | const Cursor& cursor = (m_resize_corner == LEFTTOP) ? frame().theme()->upperLeftAngleCursor() : |
3384 | (m_resize_corner == RIGHTTOP) ? frame().theme()->upperRightAngleCursor() : | 3388 | (m_resize_corner == RIGHTTOP) ? frame().theme()->upperRightAngleCursor() : |