add options for ignoring shaded windows and full-maxed windows while placing new windows
Dana Jansens danakj@orodu.net
5 files changed,
66 insertions(+),
7 deletions(-)
M
src/Screen.cc
→
src/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.hh
→
src/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.cc
→
src/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(),