resource.titlebar_layout = NULL;
resource.auto_raise_delay.tv_sec = resource.auto_raise_delay.tv_usec = 0;
- focused_window = masked_window = NULL;
+ masked_window = NULL;
masked = None;
windowSearchList = new LinkedList<WindowSearch>;
"Openbox::Openbox: no managable screens found, aborting.\n"));
::exit(3);
}
+ focused_screen = screenList->first();
// save current settings and default values
save();
void Openbox::process_event(XEvent *e) {
- if ((masked == e->xany.window) && masked_window &&
+ if ((masked == e->xany.window && masked_window) &&
(e->type == MotionNotify)) {
last_time = e->xmotion.time;
masked_window->motionNotifyEvent(&e->xmotion);
-
return;
}
if (! win)
win = new OpenboxWindow(*this, e->xmaprequest.window);
- if ((win = searchWindow(e->xmaprequest.window))) {
+ if ((win = searchWindow(e->xmaprequest.window)))
win->mapRequestEvent(&e->xmaprequest);
- // if we're using the click to place placement type, then immediately
- // after the window is mapped, we need to start interactively moving it
- if (win->getScreen()->placementPolicy() == BScreen::ClickMousePlacement) {
- int x, y, rx, ry;
- Window c, r;
- unsigned int m;
- XQueryPointer(getXDisplay(), win->getScreen()->getRootWindow(),
- &r, &c, &rx, &ry, &x, &y, &m);
- win->startMove(rx, ry);
- }
- }
+
break;
}
if ((win = searchWindow(e->xunmap.window))) {
win->unmapNotifyEvent(&e->xunmap);
- if (focused_window == win)
- focused_window = (OpenboxWindow *) 0;
#ifdef SLIT
} else if ((slit = searchSlit(e->xunmap.window))) {
slit->removeClient(e->xunmap.window);
if ((win = searchWindow(e->xdestroywindow.window))) {
win->destroyNotifyEvent(&e->xdestroywindow);
- if (focused_window == win)
- focused_window = (OpenboxWindow *) 0;
#ifdef SLIT
} else if ((slit = searchSlit(e->xdestroywindow.window))) {
slit->removeClient(e->xdestroywindow.window, False);
break;
OpenboxWindow *win = searchWindow(e->xfocus.window);
- if (win && ! win->isFocused())
- setFocusedWindow(win);
+ if (win && !win->isFocused())
+ focusWindow(win);
break;
}
config.setValue("session.menuFile", getMenuFilename());
config.setValue("session.colorsPerChannel",
resource.colors_per_channel);
+ config.setValue("session.styleFile", resource.style_file);
+ config.setValue("session.titlebarLayout", resource.titlebar_layout);
config.setValue("session.doubleClickInterval",
(long)resource.double_click_interval);
config.setValue("session.autoRaiseDelay",
(resource.auto_raise_delay.tv_usec / 1000)));
config.setValue("session.cacheLife", (long)resource.cache_life / 60000);
config.setValue("session.cacheMax", (long)resource.cache_max);
- config.setValue("session.styleFile", resource.style_file);
LinkedListIterator<BScreen> it(screenList);
for (BScreen *s = it.current(); s != NULL; it++, s = it.current()) {
}
-void Openbox::setFocusedWindow(OpenboxWindow *win) {
- BScreen *old_screen = (BScreen *) 0, *screen = (BScreen *) 0;
- OpenboxWindow *old_win = (OpenboxWindow *) 0;
+OpenboxWindow *Openbox::focusedWindow() {
+ if (focused_screen == (BScreen *) 0)
+ return (OpenboxWindow *) 0;
+ return focused_screen->getCurrentWorkspace()->focusedWindow();
+}
+
+
+void Openbox::focusWindow(OpenboxWindow *win) {
+ BScreen *old_screen = (BScreen *) 0;
Toolbar *old_tbar = (Toolbar *) 0, *tbar = (Toolbar *) 0;
Workspace *old_wkspc = (Workspace *) 0, *wkspc = (Workspace *) 0;
- if (focused_window) {
- old_win = focused_window;
+ OpenboxWindow *old_win = focusedWindow();
+ if (old_win != (OpenboxWindow *) 0) {
old_screen = old_win->getScreen();
- old_tbar = old_screen->getToolbar();
old_wkspc = old_screen->getWorkspace(old_win->getWorkspaceNumber());
+ old_tbar = old_screen->getToolbar();
old_win->setFocusFlag(False);
- old_wkspc->getMenu()->setItemSelected(old_win->getWindowNumber(), False);
+ old_wkspc->focusWindow((OpenboxWindow *) 0);
}
- if (win && ! win->isIconic()) {
- screen = win->getScreen();
- tbar = screen->getToolbar();
- wkspc = screen->getWorkspace(win->getWorkspaceNumber());
-
- focused_window = win;
-
- win->setFocusFlag(True);
- wkspc->getMenu()->setItemSelected(win->getWindowNumber(), True);
- } else {
- focused_window = (OpenboxWindow *) 0;
+ if (win && !win->isIconic()) {
+ focused_screen = win->getScreen();
+ tbar = focused_screen->getToolbar();
+ wkspc = focused_screen->getWorkspace(win->getWorkspaceNumber());
+ win->setFocusFlag(true);
+ wkspc->focusWindow(win);
+
+ if (tbar)
+ tbar->redrawWindowLabel(true);
+ focused_screen->updateNetizenWindowFocus();
+ //} else {
+ // focused_window = (OpenboxWindow *) 0;
}
- if (tbar)
- tbar->redrawWindowLabel(True);
- if (screen)
- screen->updateNetizenWindowFocus();
-
if (old_tbar && old_tbar != tbar)
- old_tbar->redrawWindowLabel(True);
- if (old_screen && old_screen != screen)
+ old_tbar->redrawWindowLabel(true);
+ if (old_screen && old_screen != focused_screen)
old_screen->updateNetizenWindowFocus();
}