all repos — openbox @ 5377e3fde108da56894185716d47c3058032b97f

openbox fork - make it a bit more like ryudo

added "Hide Toolbar" option.
Dana Jansens danakj@orodu.net
commit

5377e3fde108da56894185716d47c3058032b97f

parent

b0f8eab0e6be1448e54db56cbed9c01b3a79020e

6 files changed, 66 insertions(+), 14 deletions(-)

jump to
M nls/C/Configmenu.mnls/C/Configmenu.m

@@ -16,6 +16,8 @@ $ #FocusNew

# Focus New Windows $ #FocusLast # Focus Window on Workspace Change +$ #HideToolbar +# Hide Toolbar $ #ClickToFocus # Click to Focus $ #SloppyFocus
M src/Configmenu.ccsrc/Configmenu.cc

@@ -53,6 +53,8 @@ insert(i18n(ConfigmenuSet, ConfigmenuFocusNew,

"Focus New Windows"), 4); insert(i18n(ConfigmenuSet, ConfigmenuFocusLast, "Focus Last Window on Workspace"), 5); + insert(i18n(ConfigmenuSet, ConfigmenuHideToolbar, + "Hide Toolbar"), 6); update(); setValues(); }

@@ -64,6 +66,7 @@ setItemSelected(3, getScreen()->doOpaqueMove());

setItemSelected(4, getScreen()->doFullMax()); setItemSelected(5, getScreen()->doFocusNew()); setItemSelected(6, getScreen()->doFocusLast()); + setItemSelected(7, getScreen()->doHideToolbar()); }

@@ -108,6 +111,12 @@

case 5: { // focus last window on workspace getScreen()->saveFocusLast((! getScreen()->doFocusLast())); setItemSelected(index, getScreen()->doFocusLast()); + break; + } + + case 6: { // hide toolbar + getScreen()->saveHideToolbar((! getScreen()->doHideToolbar())); + setItemSelected(index, getScreen()->doHideToolbar()); break; } } // switch
M src/Screen.ccsrc/Screen.cc

@@ -408,6 +408,16 @@ config->setValue(screenstr + "focusLastWindow", resource.focus_last);

} +void BScreen::saveHideToolbar(bool h) { + resource.hide_toolbar = h; + if (resource.hide_toolbar) + toolbar->unmapToolbar(); + else + toolbar->mapToolbar(); + config->setValue(screenstr + "hideToolbar", resource.hide_toolbar); +} + + void BScreen::saveWorkspaces(unsigned int w) { resource.workspaces = w; config->setValue(screenstr + "workspaces", resource.workspaces);

@@ -493,6 +503,7 @@ saveOpaqueMove(resource.opaque_move);

saveFullMax(resource.full_max); saveFocusNew(resource.focus_new); saveFocusLast(resource.focus_last); + saveHideToolbar(resource.hide_toolbar); saveWorkspaces(resource.workspaces); savePlacementPolicy(resource.placement_policy); saveEdgeSnapThreshold(resource.edge_snap_threshold);

@@ -528,6 +539,9 @@ resource.workspaces = 1;

if (! config->getValue(screenstr + "opaqueMove", resource.opaque_move)) resource.opaque_move = false; + + if (! config->getValue(screenstr + "hideToolbar", resource.hide_toolbar)) + resource.hide_toolbar = false; if (! config->getValue(screenstr + "imageDither", b)) b = true;
M src/Screen.hhsrc/Screen.hh

@@ -150,7 +150,8 @@ ToolbarStyle tstyle;

MenuStyle mstyle; bool sloppy_focus, auto_raise, auto_edge_balance, ordered_dither, - opaque_move, full_max, focus_new, focus_last, click_raise; + opaque_move, full_max, focus_new, focus_last, click_raise, + hide_toolbar; BColor border_color; unsigned int workspaces;

@@ -212,6 +213,7 @@ inline bool doOpaqueMove(void) const { return resource.opaque_move; }

inline bool doFullMax(void) const { return resource.full_max; } inline bool doFocusNew(void) const { return resource.focus_new; } inline bool doFocusLast(void) const { return resource.focus_last; } + inline bool doHideToolbar(void) const { return resource.hide_toolbar; } inline const GC &getOpGC(void) const { return opGC; }

@@ -268,6 +270,7 @@ void saveOpaqueMove(bool o);

void saveFullMax(bool f); void saveFocusNew(bool f); void saveFocusLast(bool f); + void saveHideToolbar(bool h); inline void iconUpdate(void) { iconmenu->update(); } #ifdef HAVE_STRFTIME
M src/Toolbar.ccsrc/Toolbar.cc

@@ -161,14 +161,12 @@

screen->addStrut(&strut); reconfigure(); - - XMapSubwindows(display, frame.window); - XMapWindow(display, frame.window); + mapToolbar(); } Toolbar::~Toolbar(void) { - XUnmapWindow(display, frame.window); + unmapToolbar(); if (frame.base) screen->getImageControl()->removeImage(frame.base); if (frame.label) screen->getImageControl()->removeImage(frame.label);

@@ -195,6 +193,25 @@

delete hide_timer; delete clock_timer; delete toolbarmenu; +} + + +void Toolbar::mapToolbar() { + if (!screen->doHideToolbar()) { + //not hidden, so windows should not maximize over the toolbar + XMapSubwindows(display, frame.window); + XMapWindow(display, frame.window); + } + updateStrut(); +} + + +void Toolbar::unmapToolbar() { + if (toolbarmenu->isVisible()) + toolbarmenu->hide(); + //hidden so we can maximize over the toolbar + XUnmapWindow(display, frame.window); + updateStrut(); }

@@ -511,14 +528,16 @@ void Toolbar::updateStrut(void) {

// left and right are always 0 strut.top = strut.bottom = 0; - switch(placement) { - case TopLeft: - case TopCenter: - case TopRight: - strut.top = getExposedHeight() + (screen->getBorderWidth() * 2); - break; - default: - strut.bottom = getExposedHeight() + (screen->getBorderWidth() * 2); + if (! screen->doHideToolbar()) { + switch(placement) { + case TopLeft: + case TopCenter: + case TopRight: + strut.top = getExposedHeight() + (screen->getBorderWidth() * 2); + break; + default: + strut.bottom = getExposedHeight() + (screen->getBorderWidth() * 2); + } } screen->updateAvailableArea();
M src/Toolbar.hhsrc/Toolbar.hh

@@ -155,13 +155,18 @@

void save_rc(void); void load_rc(void); + void mapToolbar(void); + void unmapToolbar(void); + inline Window getWindowID(void) const { return frame.window; } inline const Rect& getRect(void) const { return frame.rect; } inline unsigned int getWidth(void) const { return frame.rect.width(); } inline unsigned int getHeight(void) const { return frame.rect.height(); } inline unsigned int getExposedHeight(void) const - { return ((do_auto_hide) ? frame.bevel_w : frame.rect.height()); } + { return (screen->doHideToolbar() ? 0 : + ((do_auto_hide) ? frame.bevel_w : + frame.rect.height())); } inline int getX(void) const { return ((hidden) ? frame.x_hidden : frame.rect.x()); } inline int getY(void) const