summaryrefslogtreecommitdiff
path: root/src/Workspace.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-05-10 02:58:09 +0000
committerDana Jansens <danakj@orodu.net>2002-05-10 02:58:09 +0000
commit098fae70a6d8d15877938080437f0fc20f52bbf5 (patch)
treec36efeb00bd5dda3c854c05296de870efac7f2f2 /src/Workspace.cc
parentec10256a787c49fac27474a0fb344d9a56012f3f (diff)
better gcc3 compat. using ostrstream again. and using namespace std;
some focus changes. workspace contains a focused window instead of openbox class. this fixes a seg
Diffstat (limited to 'src/Workspace.cc')
-rw-r--r--src/Workspace.cc20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/Workspace.cc b/src/Workspace.cc
index 0af1c332..d8737348 100644
--- a/src/Workspace.cc
+++ b/src/Workspace.cc
@@ -63,9 +63,8 @@
typedef std::vector<Rect> rectList;
Workspace::Workspace(BScreen &scrn, int i) : screen(scrn) {
-
cascade_x = cascade_y = 0;
-
+ _focused = (OpenboxWindow *) 0;
id = i;
stackingList = new LinkedList<OpenboxWindow>;
@@ -122,11 +121,11 @@ const int Workspace::removeWindow(OpenboxWindow *w) {
w->getTransientFor()->isVisible()) {
w->getTransientFor()->setInputFocus();
} else if (screen.sloppyFocus()) {
- screen.getOpenbox().setFocusedWindow((OpenboxWindow *) 0);
+ screen.getOpenbox().focusWindow((OpenboxWindow *) 0);
} else {
OpenboxWindow *top = stackingList->first();
if (! top || ! top->setInputFocus()) {
- screen.getOpenbox().setFocusedWindow((OpenboxWindow *) 0);
+ screen.getOpenbox().focusWindow((OpenboxWindow *) 0);
XSetInputFocus(screen.getOpenbox().getXDisplay(),
screen.getToolbar()->getWindowID(),
RevertToParent, CurrentTime);
@@ -152,6 +151,15 @@ const int Workspace::removeWindow(OpenboxWindow *w) {
}
+void Workspace::focusWindow(OpenboxWindow *win) {
+ if (win != (OpenboxWindow *) 0)
+ clientmenu->setItemSelected(win->getWindowNumber(), true);
+ if (_focused != (OpenboxWindow *) 0)
+ clientmenu->setItemSelected(_focused->getWindowNumber(), false);
+ _focused = win;
+}
+
+
void Workspace::showAll(void) {
LinkedListIterator<OpenboxWindow> it(stackingList);
for (OpenboxWindow *bw = it.current(); bw; it++, bw = it.current())
@@ -506,7 +514,7 @@ Point *Workspace::rowSmartPlacement(const Size &win_size, const Rect &space) {
best = NULL;
for (siter=spaces.begin(); siter!=spaces.end(); ++siter)
if ((siter->w() >= win_size.w()) && (siter->h() >= win_size.h())) {
- best = siter;
+ best = &*siter;
break;
}
@@ -550,7 +558,7 @@ Point *Workspace::colSmartPlacement(const Size &win_size, const Rect &space) {
best = NULL;
for (siter=spaces.begin(); siter!=spaces.end(); ++siter)
if ((siter->w() >= win_size.w()) && (siter->h() >= win_size.h())) {
- best = siter;
+ best = &*siter;
break;
}