summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-07-16 02:18:16 +0000
committerDana Jansens <danakj@orodu.net>2002-07-16 02:18:16 +0000
commit5cf86b186c89ffb87f02ab732aa113ce8025dc2a (patch)
tree0172bb5827be5a7598baac5f90f64f7a813ba717 /src
parent27fadda0d66e2485cd43a1bd38d918a3bacf4698 (diff)
add options for ignoring shaded windows and full-maxed windows while placing new windows
Diffstat (limited to 'src')
-rw-r--r--src/Configmenu.cc23
-rw-r--r--src/Screen.cc31
-rw-r--r--src/Screen.hh12
-rw-r--r--src/Workspace.cc3
4 files changed, 62 insertions, 7 deletions
diff --git a/src/Configmenu.cc b/src/Configmenu.cc
index d78d3da9..c4f2326e 100644
--- a/src/Configmenu.cc
+++ b/src/Configmenu.cc
@@ -229,6 +229,11 @@ Configmenu::Placementmenu::Placementmenu(Configmenu *cm):
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 @@ void Configmenu::Placementmenu::setValues(void) {
setItemSelected(7, ! tb);
setItemEnabled(6, e);
setItemEnabled(7, e);
+
+ setItemSelected(8, getScreen()->getPlaceIgnoreShaded());
+ setItemSelected(9, getScreen()->getPlaceIgnoreMaximized());
}
@@ -361,5 +369,20 @@ void Configmenu::Placementmenu::itemSelected(int button, unsigned int index) {
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;
}
}
diff --git a/src/Screen.cc b/src/Screen.cc
index c2f52cb9..a01b0887 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -490,7 +490,7 @@ void BScreen::saveDateFormat(int f) {
}
-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 @@ void BScreen::saveWorkspaceNames() {
}
+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 @@ void BScreen::save_rc(void) {
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 @@ void BScreen::load_rc(void) {
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 @@ void BScreen::load_rc(void) {
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;
}
diff --git a/src/Screen.hh b/src/Screen.hh
index 37946b99..7701a1d2 100644
--- a/src/Screen.hh
+++ b/src/Screen.hh
@@ -149,7 +149,8 @@ private:
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 @@ private:
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 @@ public:
{ 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 @@ public:
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
diff --git a/src/Workspace.cc b/src/Workspace.cc
index 88280a1d..586adbad 100644
--- a/src/Workspace.cc
+++ b/src/Workspace.cc
@@ -572,7 +572,8 @@ bool Workspace::smartPlacement(Rect& win, const Rect& availableArea) {
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(),