diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/Remember.cc | 7 | ||||
-rw-r--r-- | src/Window.cc | 80 | ||||
-rw-r--r-- | src/Window.hh | 3 |
4 files changed, 45 insertions, 49 deletions
@@ -1,5 +1,9 @@ | |||
1 | (Format: Year/Month/Day) | 1 | (Format: Year/Month/Day) |
2 | Changes for 0.9.3: | 2 | Changes for 0.9.3: |
3 | *03/05/26: | ||
4 | * Fix usage of decorations.border, add BORDER decoration to remember | ||
5 | (Simon) | ||
6 | Window.hh/cc Remember.cc | ||
3 | *03/05/24: | 7 | *03/05/24: |
4 | * Fix crash when toolbar turned off, and toolbar initialisation (Simon) | 8 | * Fix crash when toolbar turned off, and toolbar initialisation (Simon) |
5 | Menu.cc Screen.cc Toolbar.cc | 9 | Menu.cc Screen.cc Toolbar.cc |
diff --git a/src/Remember.cc b/src/Remember.cc index 6db5eb4..16a2ee3 100644 --- a/src/Remember.cc +++ b/src/Remember.cc | |||
@@ -21,7 +21,7 @@ | |||
21 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 21 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
22 | // DEALINGS IN THE SOFTWARE. | 22 | // DEALINGS IN THE SOFTWARE. |
23 | 23 | ||
24 | // $Id: Remember.cc,v 1.16 2003/05/15 23:30:06 fluxgen Exp $ | 24 | // $Id: Remember.cc,v 1.17 2003/05/26 04:24:24 rathnor Exp $ |
25 | 25 | ||
26 | #include "Remember.hh" | 26 | #include "Remember.hh" |
27 | #include "StringUtil.hh" | 27 | #include "StringUtil.hh" |
@@ -264,6 +264,11 @@ int Remember::parseApp(ifstream &file, Application &app) { | |||
264 | FluxboxWindow::DECORM_TITLEBAR | 264 | FluxboxWindow::DECORM_TITLEBAR |
265 | | FluxboxWindow::DECORM_MENU | 265 | | FluxboxWindow::DECORM_MENU |
266 | ); | 266 | ); |
267 | } else if (str_label == "BORDER") { | ||
268 | app.rememberDecostate((unsigned int) | ||
269 | FluxboxWindow::DECORM_BORDER | ||
270 | | FluxboxWindow::DECORM_MENU | ||
271 | ); | ||
267 | } else { | 272 | } else { |
268 | unsigned int mask; | 273 | unsigned int mask; |
269 | const char * str = str_label.c_str(); | 274 | const char * str = str_label.c_str(); |
diff --git a/src/Window.cc b/src/Window.cc index 320bd62..2101e0d 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Window.cc,v 1.186 2003/05/24 13:02:49 fluxgen Exp $ | 25 | // $Id: Window.cc,v 1.187 2003/05/26 04:24:24 rathnor Exp $ |
26 | 26 | ||
27 | #include "Window.hh" | 27 | #include "Window.hh" |
28 | 28 | ||
@@ -502,7 +502,7 @@ void FluxboxWindow::init() { | |||
502 | 502 | ||
503 | grabButtons(); | 503 | grabButtons(); |
504 | 504 | ||
505 | positionWindows(); | 505 | applyDecorations(); |
506 | 506 | ||
507 | if (m_workspace_number < 0 || m_workspace_number >= screen().getCount()) | 507 | if (m_workspace_number < 0 || m_workspace_number >= screen().getCount()) |
508 | m_workspace_number = screen().currentWorkspaceID(); | 508 | m_workspace_number = screen().currentWorkspaceID(); |
@@ -839,10 +839,10 @@ void FluxboxWindow::grabButtons() { | |||
839 | 839 | ||
840 | 840 | ||
841 | void FluxboxWindow::reconfigure() { | 841 | void FluxboxWindow::reconfigure() { |
842 | 842 | ||
843 | upsize(); | 843 | upsize(); |
844 | 844 | ||
845 | positionWindows(); | 845 | applyDecorations(); |
846 | 846 | ||
847 | setFocusFlag(focused); | 847 | setFocusFlag(focused); |
848 | 848 | ||
@@ -856,32 +856,6 @@ void FluxboxWindow::reconfigure() { | |||
856 | 856 | ||
857 | } | 857 | } |
858 | 858 | ||
859 | |||
860 | void FluxboxWindow::positionWindows() { | ||
861 | |||
862 | frame().window().setBorderWidth(screen().rootTheme().borderWidth()); | ||
863 | frame().clientArea().setBorderWidth(0); // client area bordered by other things | ||
864 | |||
865 | frame().titlebar().setBorderWidth(screen().rootTheme().borderWidth()); | ||
866 | if (decorations.titlebar) { | ||
867 | frame().showTitlebar(); | ||
868 | } else { | ||
869 | frame().hideTitlebar(); | ||
870 | } | ||
871 | |||
872 | frame().handle().setBorderWidth(screen().rootTheme().borderWidth()); | ||
873 | frame().gripLeft().setBorderWidth(screen().rootTheme().borderWidth()); | ||
874 | frame().gripRight().setBorderWidth(screen().rootTheme().borderWidth()); | ||
875 | |||
876 | if (decorations.handle) | ||
877 | frame().showHandle(); | ||
878 | else | ||
879 | frame().hideHandle(); | ||
880 | |||
881 | frame().reconfigure(); | ||
882 | |||
883 | } | ||
884 | |||
885 | /// update current client title and title in our frame | 859 | /// update current client title and title in our frame |
886 | void FluxboxWindow::updateTitleFromClient() { | 860 | void FluxboxWindow::updateTitleFromClient() { |
887 | 861 | ||
@@ -1026,12 +1000,12 @@ void FluxboxWindow::getMWMHints() { | |||
1026 | Atom atom_return; | 1000 | Atom atom_return; |
1027 | unsigned long num, len; | 1001 | unsigned long num, len; |
1028 | Atom motif_wm_hints = XInternAtom(display, "_MOTIF_WM_HINTS", False); | 1002 | Atom motif_wm_hints = XInternAtom(display, "_MOTIF_WM_HINTS", False); |
1029 | if (!m_client->property(motif_wm_hints, 0, | 1003 | if (!(m_client->property(motif_wm_hints, 0, |
1030 | PropMwmHintsElements, false, | 1004 | PropMwmHintsElements, false, |
1031 | motif_wm_hints, &atom_return, | 1005 | motif_wm_hints, &atom_return, |
1032 | &format, &num, &len, | 1006 | &format, &num, &len, |
1033 | (unsigned char **) &m_client->mwm_hint) == Success && | 1007 | (unsigned char **) &m_client->mwm_hint) && |
1034 | m_client->mwm_hint) { | 1008 | m_client->mwm_hint)) { |
1035 | return; | 1009 | return; |
1036 | } | 1010 | } |
1037 | if (num != static_cast<unsigned int>(PropMwmHintsElements)) | 1011 | if (num != static_cast<unsigned int>(PropMwmHintsElements)) |
@@ -1182,18 +1156,18 @@ bool FluxboxWindow::setInputFocus() { | |||
1182 | //TODO hint skip focus | 1156 | //TODO hint skip focus |
1183 | if (((signed) (frame().x() + frame().width())) < 0) { | 1157 | if (((signed) (frame().x() + frame().width())) < 0) { |
1184 | if (((signed) (frame().y() + frame().height())) < 0) { | 1158 | if (((signed) (frame().y() + frame().height())) < 0) { |
1185 | moveResize(screen().rootTheme().borderWidth(), screen().rootTheme().borderWidth(), | 1159 | moveResize(frame().window().borderWidth(), frame().window().borderWidth(), |
1186 | frame().width(), frame().height()); | 1160 | frame().width(), frame().height()); |
1187 | } else if (frame().y() > (signed) screen().height()) { | 1161 | } else if (frame().y() > (signed) screen().height()) { |
1188 | moveResize(screen().rootTheme().borderWidth(), screen().height() - frame().height(), | 1162 | moveResize(frame().window().borderWidth(), screen().height() - frame().height(), |
1189 | frame().width(), frame().height()); | 1163 | frame().width(), frame().height()); |
1190 | } else { | 1164 | } else { |
1191 | moveResize(screen().rootTheme().borderWidth(), frame().y() + screen().rootTheme().borderWidth(), | 1165 | moveResize(frame().window().borderWidth(), frame().y() + frame().window().borderWidth(), |
1192 | frame().width(), frame().height()); | 1166 | frame().width(), frame().height()); |
1193 | } | 1167 | } |
1194 | } else if (frame().x() > (signed) screen().width()) { | 1168 | } else if (frame().x() > (signed) screen().width()) { |
1195 | if (((signed) (frame().y() + frame().height())) < 0) { | 1169 | if (((signed) (frame().y() + frame().height())) < 0) { |
1196 | moveResize(screen().width() - frame().width(), screen().rootTheme().borderWidth(), | 1170 | moveResize(screen().width() - frame().width(), frame().window().borderWidth(), |
1197 | frame().width(), frame().height()); | 1171 | frame().width(), frame().height()); |
1198 | } else if (frame().y() > (signed) screen().height()) { | 1172 | } else if (frame().y() > (signed) screen().height()) { |
1199 | moveResize(screen().width() - frame().width(), | 1173 | moveResize(screen().width() - frame().width(), |
@@ -1201,7 +1175,7 @@ bool FluxboxWindow::setInputFocus() { | |||
1201 | frame().width(), frame().height()); | 1175 | frame().width(), frame().height()); |
1202 | } else { | 1176 | } else { |
1203 | moveResize(screen().width() - frame().width(), | 1177 | moveResize(screen().width() - frame().width(), |
1204 | frame().y() + screen().rootTheme().borderWidth(), | 1178 | frame().y() + frame().window().borderWidth(), |
1205 | frame().width(), frame().height()); | 1179 | frame().width(), frame().height()); |
1206 | } | 1180 | } |
1207 | } | 1181 | } |
@@ -2360,8 +2334,8 @@ void FluxboxWindow::buttonPressEvent(XButtonEvent &be) { | |||
2360 | raise(); | 2334 | raise(); |
2361 | XAllowEvents(display, ReplayPointer, be.time); | 2335 | XAllowEvents(display, ReplayPointer, be.time); |
2362 | } else { | 2336 | } else { |
2363 | m_button_grab_x = be.x_root - frame().x() - screen().rootTheme().borderWidth(); | 2337 | m_button_grab_x = be.x_root - frame().x() - frame().window().borderWidth(); |
2364 | m_button_grab_y = be.y_root - frame().y() - screen().rootTheme().borderWidth(); | 2338 | m_button_grab_y = be.y_root - frame().y() - frame().window().borderWidth(); |
2365 | } | 2339 | } |
2366 | 2340 | ||
2367 | if (m_windowmenu.isVisible()) | 2341 | if (m_windowmenu.isVisible()) |
@@ -2398,7 +2372,7 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) { | |||
2398 | if (Fluxbox::instance()->getIgnoreBorder() | 2372 | if (Fluxbox::instance()->getIgnoreBorder() |
2399 | && !(me.state & Mod1Mask) // really should check for exact matches | 2373 | && !(me.state & Mod1Mask) // really should check for exact matches |
2400 | && !(isMoving() || isResizing())) { | 2374 | && !(isMoving() || isResizing())) { |
2401 | int borderw = screen().rootTheme().borderWidth(); | 2375 | int borderw = frame().window().borderWidth(); |
2402 | if (me.x_root < (frame().x() + borderw) || | 2376 | if (me.x_root < (frame().x() + borderw) || |
2403 | me.y_root < (frame().y() + borderw) || | 2377 | me.y_root < (frame().y() + borderw) || |
2404 | me.x_root > (frame().x() + (int)frame().width() + borderw) || | 2378 | me.x_root > (frame().x() + (int)frame().width() + borderw) || |
@@ -2430,8 +2404,8 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) { | |||
2430 | int dx = me.x_root - m_button_grab_x, | 2404 | int dx = me.x_root - m_button_grab_x, |
2431 | dy = me.y_root - m_button_grab_y; | 2405 | dy = me.y_root - m_button_grab_y; |
2432 | 2406 | ||
2433 | dx -= screen().rootTheme().borderWidth(); | 2407 | dx -= frame().window().borderWidth(); |
2434 | dy -= screen().rootTheme().borderWidth(); | 2408 | dy -= frame().window().borderWidth(); |
2435 | 2409 | ||
2436 | // Warp to next or previous workspace?, must have moved sideways some | 2410 | // Warp to next or previous workspace?, must have moved sideways some |
2437 | int moved_x = me.x_root - m_last_resize_x; | 2411 | int moved_x = me.x_root - m_last_resize_x; |
@@ -2561,8 +2535,8 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) { | |||
2561 | // so we update drag'n'drop-rectangle | 2535 | // so we update drag'n'drop-rectangle |
2562 | int dx = me.x_root - 1, dy = me.y_root - 1; | 2536 | int dx = me.x_root - 1, dy = me.y_root - 1; |
2563 | 2537 | ||
2564 | dx -= screen().rootTheme().borderWidth(); | 2538 | dx -= frame().window().borderWidth(); |
2565 | dy -= screen().rootTheme().borderWidth(); | 2539 | dy -= frame().window().borderWidth(); |
2566 | 2540 | ||
2567 | if (screen().getEdgeSnapThreshold()) { | 2541 | if (screen().getEdgeSnapThreshold()) { |
2568 | int drx = screen().width() - (dx + 1); | 2542 | int drx = screen().width() - (dx + 1); |
@@ -2699,6 +2673,21 @@ void FluxboxWindow::setDecoration(Decoration decoration) { | |||
2699 | 2673 | ||
2700 | // commit current decoration values to actual displayed things | 2674 | // commit current decoration values to actual displayed things |
2701 | void FluxboxWindow::applyDecorations() { | 2675 | void FluxboxWindow::applyDecorations() { |
2676 | frame().clientArea().setBorderWidth(0); // client area bordered by other things | ||
2677 | |||
2678 | unsigned int borderW = 0; | ||
2679 | if (decorations.border) | ||
2680 | borderW = screen().rootTheme().borderWidth(); | ||
2681 | |||
2682 | if (frame().window().borderWidth() != borderW) { | ||
2683 | frame().window().setBorderWidth(borderW); | ||
2684 | frame().titlebar().setBorderWidth(borderW); | ||
2685 | frame().handle().setBorderWidth(borderW); | ||
2686 | frame().gripLeft().setBorderWidth(borderW); | ||
2687 | frame().gripRight().setBorderWidth(borderW); | ||
2688 | frame().reconfigure(); | ||
2689 | } | ||
2690 | |||
2702 | // we rely on frame not doing anything if it is already shown/hidden | 2691 | // we rely on frame not doing anything if it is already shown/hidden |
2703 | if (decorations.titlebar) | 2692 | if (decorations.titlebar) |
2704 | frame().showTitlebar(); | 2693 | frame().showTitlebar(); |
@@ -2710,7 +2699,6 @@ void FluxboxWindow::applyDecorations() { | |||
2710 | else | 2699 | else |
2711 | frame().hideHandle(); | 2700 | frame().hideHandle(); |
2712 | 2701 | ||
2713 | // is reconfigure needed here? | ||
2714 | } | 2702 | } |
2715 | 2703 | ||
2716 | void FluxboxWindow::toggleDecoration() { | 2704 | void FluxboxWindow::toggleDecoration() { |
diff --git a/src/Window.hh b/src/Window.hh index 32a479c..3a06702 100644 --- a/src/Window.hh +++ b/src/Window.hh | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Window.hh,v 1.75 2003/05/24 13:01:48 fluxgen Exp $ | 25 | // $Id: Window.hh,v 1.76 2003/05/26 04:24:24 rathnor Exp $ |
26 | 26 | ||
27 | #ifndef WINDOW_HH | 27 | #ifndef WINDOW_HH |
28 | #define WINDOW_HH | 28 | #define WINDOW_HH |
@@ -373,7 +373,6 @@ private: | |||
373 | void associateClientWindow(); | 373 | void associateClientWindow(); |
374 | void createWinButtons(); | 374 | void createWinButtons(); |
375 | void decorateLabel(); | 375 | void decorateLabel(); |
376 | void positionWindows(); | ||
377 | 376 | ||
378 | void restoreGravity(); | 377 | void restoreGravity(); |
379 | void setGravityOffsets(); | 378 | void setGravityOffsets(); |