all repos — openbox @ 5cf86b186c89ffb87f02ab732aa113ce8025dc2a

openbox fork - make it a bit more like ryudo

add options for ignoring shaded windows and full-maxed windows while placing new windows
Dana Jansens danakj@orodu.net
commit

5cf86b186c89ffb87f02ab732aa113ce8025dc2a

parent

27fadda0d66e2485cd43a1bd38d918a3bacf4698

5 files changed, 66 insertions(+), 7 deletions(-)

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

@@ -46,3 +46,7 @@ $ #TopBottom

# Top to Bottom $ #BottomTop # Bottom to Top +$ #IgnoreShaded +# Ignore shaded windows +$ #IgnoreMax +# Ignore full-maximized windows
M src/Configmenu.ccsrc/Configmenu.cc

@@ -229,6 +229,11 @@ insert(i18n(ConfigmenuSet, ConfigmenuTopBottom, "Top to Bottom"),

BScreen::TopBottom); insert(i18n(ConfigmenuSet, ConfigmenuBottomTop, "Bottom to Top"), BScreen::BottomTop); + insert(i18n(ConfigmenuSet, ConfigmenuIgnoreShaded, "Ignore shaded windows"), + BScreen::IgnoreShaded); + insert(i18n(ConfigmenuSet, ConfigmenuIgnoreMax, + "Ignore full-maximized windows"), + BScreen::IgnoreMaximized); update(); setValues(); }

@@ -255,6 +260,9 @@ setItemSelected(6, tb);

setItemSelected(7, ! tb); setItemEnabled(6, e); setItemEnabled(7, e); + + setItemSelected(8, getScreen()->getPlaceIgnoreShaded()); + setItemSelected(9, getScreen()->getPlaceIgnoreMaximized()); }

@@ -359,6 +367,21 @@ getScreen()->saveColPlacementDirection(BScreen::BottomTop);

setItemSelected(6, false); setItemSelected(7, true); + + break; + + case BScreen::IgnoreShaded: + getScreen()->savePlaceIgnoreShaded(! getScreen()->getPlaceIgnoreShaded()); + + setItemSelected(8, getScreen()->getPlaceIgnoreShaded()); + + break; + + case BScreen::IgnoreMaximized: + getScreen()-> + savePlaceIgnoreMaximized(! getScreen()->getPlaceIgnoreMaximized()); + + setItemSelected(9, getScreen()->getPlaceIgnoreMaximized()); break; }
M src/Screen.ccsrc/Screen.cc

@@ -490,7 +490,7 @@ "European" : "American");

} -void BScreen::saveClock24Hour(Bool c) { +void BScreen::saveClock24Hour(bool c) { resource.clock24hour = c; config->setValue(screenstr + "clockFormat", resource.clock24hour ? 24 : 12); }

@@ -510,6 +510,20 @@ config->setValue(screenstr + "workspaceNames", names);

} +void BScreen::savePlaceIgnoreShaded(bool i) { + resource.ignore_shaded = i; + config->setValue(screenstr + "placementIgnoreShaded", + resource.ignore_shaded); +} + + +void BScreen::savePlaceIgnoreMaximized(bool i) { + resource.ignore_maximized = i; + config->setValue(screenstr + "placementIgnoreMaximized", + resource.ignore_maximized); +} + + void BScreen::save_rc(void) { saveSloppyFocus(resource.sloppy_focus); saveAutoRaise(resource.auto_raise);

@@ -534,6 +548,8 @@ #else // !HAVE_STRFTIME

saveDateFormat(resource.date_format); savwClock24Hour(resource.clock24hour); #endif // HAVE_STRFTIME + savePlaceIgnoreShaded(resource.ignore_shaded); + savePlaceIgnoreMaximized(resource.ignore_maximized); toolbar->save_rc(); slit->save_rc();

@@ -639,9 +655,8 @@ } else

resource.placement_policy = RowSmartPlacement; #ifdef HAVE_STRFTIME - if (config->getValue(screenstr + "strftimeFormat", s)) - resource.strftime_format = s; - else + if (! config->getValue(screenstr + "strftimeFormat", + resource.strftime_format)) resource.strftime_format = "%I:%M %p"; #else // !HAVE_STRFTIME long l;

@@ -655,6 +670,14 @@ if (! config->getValue(screenstr + "clockFormat", l))

l = 12; resource.clock24hour = l == 24; #endif // HAVE_STRFTIME + + if (! config->getValue(screenstr + "placementIgnoreShaded", + resource.ignore_shaded)) + resource.ignore_shaded = true; + + if (! config->getValue(screenstr + "placementIgnoreMaximized", + resource.ignore_maximized)) + resource.ignore_maximized = true; }
M src/Screen.hhsrc/Screen.hh

@@ -149,7 +149,8 @@ MenuStyle mstyle;

bool sloppy_focus, auto_raise, auto_edge_balance, ordered_dither, opaque_move, full_max, focus_new, focus_last, click_raise, - hide_toolbar, window_to_window_snap, window_corner_snap, aa_fonts; + hide_toolbar, window_to_window_snap, window_corner_snap, aa_fonts, + ignore_shaded, ignore_maximized; BColor border_color; unsigned int workspaces;

@@ -189,7 +190,8 @@

void updateWorkArea(void); public: enum { RowSmartPlacement = 1, ColSmartPlacement, CascadePlacement, - UnderMousePlacement, LeftRight, RightLeft, TopBottom, BottomTop }; + UnderMousePlacement, LeftRight, RightLeft, TopBottom, BottomTop, + IgnoreShaded, IgnoreMaximized }; enum { RoundBullet = 1, TriangleBullet, SquareBullet, NoBullet }; enum { Restart = 1, RestartOther, Exit, Shutdown, Execute, Reconfigure, WindowShade, WindowIconify, WindowMaximize, WindowClose, WindowRaise,

@@ -244,6 +246,10 @@ inline unsigned int getBorderWidth(void) const

{ return resource.border_width; } inline unsigned int getResizeZones(void) const { return resource.resize_zones; } + inline bool getPlaceIgnoreShaded(void) const + { return resource.ignore_shaded; } + inline bool getPlaceIgnoreMaximized(void) const + { return resource.ignore_maximized; } inline unsigned int getCurrentWorkspaceID(void) const { return current_workspace->getID(); }

@@ -280,6 +286,8 @@ void saveHideToolbar(bool h);

void saveWindowToWindowSnap(bool s); void saveWindowCornerSnap(bool s); void saveResizeZones(unsigned int z); + void savePlaceIgnoreShaded(bool i); + void savePlaceIgnoreMaximized(bool i); inline void iconUpdate(void) { iconmenu->update(); } #ifdef HAVE_STRFTIME
M src/Workspace.ccsrc/Workspace.cc

@@ -572,7 +572,8 @@ Rect tmp;

for (; wit != end; ++wit) { const BlackboxWindow* const curr = *wit; - if (curr->isShaded()) continue; + if (curr->isShaded() && screen->getPlaceIgnoreShaded()) continue; + if (curr->isMaximizedFull() && screen->getPlaceIgnoreMaximized()) continue; tmp.setRect(curr->frameRect().x(), curr->frameRect().y(), curr->frameRect().width() + screen->getBorderWidth(),