}
+void BScreen::saveShadowFonts(bool f) {
+ resource.shadow_fonts = f;
+ reconfigure();
+ config->setValue(screenstr + "dropShadowFonts", resource.shadow_fonts);
+}
+
+
void BScreen::saveHideToolbar(bool h) {
resource.hide_toolbar = h;
if (resource.hide_toolbar)
}
+void BScreen::saveRootMenuButton(unsigned int b) {
+ resource.root_menu_button = b;
+ const char *but;
+ switch (resource.root_menu_button) {
+ case 0: but = "None"; break;
+ case 1: but = "Left"; break;
+ case 2: but = "Middle"; break;
+ case 3: default: but = "Right"; break;
+ }
+ config->setValue(screenstr + "rootMenuButton", but);
+}
+
+
+void BScreen::saveWorkspaceMenuButton(unsigned int b) {
+ resource.workspace_menu_button = b;
+ const char *but;
+ switch (resource.workspace_menu_button) {
+ case 0: but = "None"; break;
+ case 1: but = "Left"; break;
+ case 2: default: but = "Middle"; break;
+ case 3: but = "Right"; break;
+ }
+ config->setValue(screenstr + "workspaceMenuButton", but);
+}
+
+
void BScreen::save_rc(void) {
saveSloppyFocus(resource.sloppy_focus);
saveAutoRaise(resource.auto_raise);
saveImageDither(doImageDither());
+ saveShadowFonts(resource.shadow_fonts);
saveAAFonts(resource.aa_fonts);
saveResizeZones(resource.resize_zones);
saveOpaqueMove(resource.opaque_move);
saveAllowScrollLock(resource.allow_scroll_lock);
saveWorkspaceWarping(resource.workspace_warping);
saveRootScrollDirection(resource.root_scroll);
+ saveRootMenuButton(resource.root_menu_button);
+ saveWorkspaceMenuButton(resource.workspace_menu_button);
toolbar->save_rc();
slit->save_rc();
if (! config->getValue(screenstr + "opaqueMove", resource.opaque_move))
resource.opaque_move = false;
+ if (! config->getValue(screenstr + "dropShadowFonts", resource.shadow_fonts))
+ resource.shadow_fonts = false;
+
if (! config->getValue(screenstr + "antialiasFonts", resource.aa_fonts))
resource.aa_fonts = true;
else if (s == "Reverse")
resource.root_scroll = ReverseScroll;
}
+
+ resource.root_menu_button = 3;
+ if (config->getValue(screenstr + "rootMenuButton", s)) {
+ if (s == "None")
+ resource.root_menu_button = 0;
+ else if (s == "Left")
+ resource.root_menu_button = 1;
+ else if (s == "Middle")
+ resource.root_menu_button = 2;
+ }
+
+ resource.workspace_menu_button = 2;
+ if (config->getValue(screenstr + "workspaceMenuButton", s)) {
+ if (s == "None")
+ resource.workspace_menu_button = 0;
+ else if (s == "Left")
+ resource.workspace_menu_button = 1;
+ else if (s == "Right")
+ resource.workspace_menu_button = 3;
+ }
+ // cant both be the same
+ if (resource.workspace_menu_button == resource.root_menu_button)
+ resource.workspace_menu_button = 0;
}
f = win->setInputFocus();
}
- // If that fails, and we're doing focus_last, try to focus the last window.
- if (! f && resource.focus_last && current_workspace->getLastFocusedWindow())
- f = current_workspace->getLastFocusedWindow()->setInputFocus();
+ // If that fails, and we're doing focus_last, try to focus the last window.
+ if (! f && resource.focus_last &&
+ (win = current_workspace->getLastFocusedWindow()))
+ f = win->setInputFocus();
+
+ /*
+ if we found a focus target, then we set the focused window explicitly
+ because it is possible to switch off this workspace before the x server
+ generates the FocusIn event for the window. if that happens, openbox would
+ lose track of what window was the 'LastFocused' window on the workspace.
- // If that fails, then set focus to nothing.
- if (! f) blackbox->setFocusedWindow((BlackboxWindow *) 0);
+ if we did not find a focus target, then set the current focused window to
+ nothing.
+ */
+ if (f)
+ blackbox->setFocusedWindow(win);
+ else
+ blackbox->setFocusedWindow((BlackboxWindow *) 0);
updateNetizenCurrentWorkspace();
}
void BScreen::addSystrayWindow(Window window) {
XGrabServer(blackbox->getXDisplay());
- XSelectInput(blackbox->getXDisplay(), window, SubstructureRedirectMask);
+ XSelectInput(blackbox->getXDisplay(), window, StructureNotifyMask);
systrayWindowList.push_back(window);
xatom->setValue(getRootWindow(), XAtom::kde_net_system_tray_windows,
XAtom::window,
if (win->isDesktop()) {
desktopWindowList.push_back(win->getFrameWindow());
- } else if (win->isNormal()) {
+ } else { // if (win->isNormal()) {
// don't list desktop windows as managed windows
windowList.push_back(win);
updateClientList();
break;
}
assert(it != end); // the window wasnt a desktop window?
- } else if (w->isNormal()) {
+ } else { // if (w->isNormal()) {
// we don't list desktop windows as managed windows
windowList.remove(w);
updateClientList();
while(! windowList.empty())
unmanageWindow(windowList.front(), True);
+ while(! desktopWindowList.empty()) {
+ BlackboxWindow *win = blackbox->searchWindow(desktopWindowList.front());
+ assert(win);
+ unmanageWindow(win, True);
+ }
+
slit->shutdown();
}
if (rootmenu->isVisible())
rootmenu->hide();
- } else if (xbutton->button == 2) {
- showWorkspaceMenu(xbutton->x_root, xbutton->y_root);
- } else if (xbutton->button == 3) {
- showRootMenu(xbutton->x_root, xbutton->y_root);
// mouse wheel up
} else if ((xbutton->button == 4 && resource.root_scroll == NormalScroll) ||
(xbutton->button == 5 && resource.root_scroll == ReverseScroll)) {
else
changeWorkspaceID(getCurrentWorkspaceID() - 1);
}
+
+ if (resource.root_menu_button > 0 &&
+ xbutton->button == resource.root_menu_button)
+ showRootMenu(xbutton->x_root, xbutton->y_root);
+ else if (resource.workspace_menu_button > 0 &&
+ xbutton->button == resource.workspace_menu_button)
+ showWorkspaceMenu(xbutton->x_root, xbutton->y_root);
}
texture.setColor(readDatabaseColor(rname + ".color", default_color, style));
texture.setColorTo(readDatabaseColor(rname + ".colorTo", default_color,
style));
+ texture.setBorderColor(readDatabaseColor(rname + ".borderColor",
+ default_color, style));
return texture;
}
}
BFont *b = new BFont(blackbox->getXDisplay(), this, family, i, bold,
- italic, resource.aa_fonts);
+ italic, resource.shadow_fonts, resource.aa_fonts);
if (b->valid())
return b;
else