X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FScreen.cc;h=e0ea21376cfb7cb919a65d744df0f625b7440d98;hb=46b2484eda7d205ea14972dabfa9e1b63e5fd520;hp=2f7e684f8e1c0a9092d478e35ac0486494f8264e;hpb=0305cbdc3ae8525c74b2bb9b23884035549e3407;p=chaz%2Fopenbox diff --git a/src/Screen.cc b/src/Screen.cc index 2f7e684f..e0ea2137 100644 --- a/src/Screen.cc +++ b/src/Screen.cc @@ -231,6 +231,7 @@ BScreen::BScreen(Blackbox *bb, unsigned int scrn) : ScreenInfo(bb, scrn) { workspacesList.push_back(wkspc); workspacemenu->insert(wkspc->getName(), wkspc->getMenu()); } + saveWorkspaceNames(); workspacemenu->insert(i18n(IconSet, IconIcons, "Icons"), iconmenu); workspacemenu->update(); @@ -407,6 +408,16 @@ void BScreen::saveFocusLast(bool f) { } +void BScreen::saveHideToolbar(bool h) { + resource.hide_toolbar = h; + if (resource.hide_toolbar) + toolbar->unmapToolbar(); + else + toolbar->mapToolbar(); + config->setValue(screenstr + "hideToolbar", resource.hide_toolbar); +} + + void BScreen::saveWorkspaces(unsigned int w) { resource.workspaces = w; config->setValue(screenstr + "workspaces", resource.workspaces); @@ -472,10 +483,15 @@ void BScreen::saveClock24Hour(Bool c) { void BScreen::saveWorkspaceNames() { - string save_string = getWorkspace(0)->getName(); - for (unsigned int i = 1; i < getWorkspaceCount(); ++i) - save_string += ',' + getWorkspace(i)->getName(); - config->setValue(screenstr + "workspaceNames", save_string); + string names; + WorkspaceList::iterator it; + WorkspaceList::iterator last = workspacesList.end() - 1; + for (it = workspacesList.begin(); it != workspacesList.end(); ++it) { + names += (*it)->getName(); + if (it != last) + names += ','; + } + config->setValue(screenstr + "workspaceNames", names); } @@ -487,6 +503,7 @@ void BScreen::save_rc(void) { saveFullMax(resource.full_max); saveFocusNew(resource.focus_new); saveFocusLast(resource.focus_last); + saveHideToolbar(resource.hide_toolbar); saveWorkspaces(resource.workspaces); savePlacementPolicy(resource.placement_policy); saveEdgeSnapThreshold(resource.edge_snap_threshold); @@ -523,6 +540,9 @@ void BScreen::load_rc(void) { if (! config->getValue(screenstr + "opaqueMove", resource.opaque_move)) resource.opaque_move = false; + if (! config->getValue(screenstr + "hideToolbar", resource.hide_toolbar)) + resource.hide_toolbar = false; + if (! config->getValue(screenstr + "imageDither", b)) b = true; image_control->setDither(b); @@ -1050,6 +1070,13 @@ void BScreen::unmanageWindow(BlackboxWindow *w, bool remap) { removeNetizen(w->getClientWindow()); + /* + some managed windows can also be window group controllers. when + unmanaging such windows, we should also delete the window group. + */ + BWindowGroup *group = blackbox->searchGroup(w->getClientWindow()); + delete group; + delete w; } @@ -1921,6 +1948,18 @@ void BScreen::buttonPressEvent(XButtonEvent *xbutton) { blackbox->checkMenu(); rootmenu->show(); } + // mouse wheel up + } else if (xbutton->button == 4) { + if (getCurrentWorkspaceID() >= getWorkspaceCount() - 1) + changeWorkspaceID(0); + else + changeWorkspaceID(getCurrentWorkspaceID() + 1); + // mouse wheel down + } else if (xbutton->button == 5) { + if (getCurrentWorkspaceID() == 0) + changeWorkspaceID(getWorkspaceCount() - 1); + else + changeWorkspaceID(getCurrentWorkspaceID() - 1); } }