X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2FConfigmenu.cc;h=3282463ef334e761fdd2f35589b6dc9a3756b78c;hb=ae093dba2fb97124bb4af3eaf4070b46f07dfd74;hp=9de8864d52500d5f276e8e6652c74c4fd4f34fc7;hpb=9cd9d92bb1d66db9329bf5cd6e42e8b0096945e6;p=chaz%2Fopenbox diff --git a/src/Configmenu.cc b/src/Configmenu.cc index 9de8864d..3282463e 100644 --- a/src/Configmenu.cc +++ b/src/Configmenu.cc @@ -1,4 +1,5 @@ // Configmenu.cc for Openbox +// Copyright (c) 2002 - 2002 Ben Jansens // Copyright (c) 2001 Sean 'Shaleh' Perry // Copyright (c) 1997 - 2000 Brad Hughes (bhughes@tcac.net) // @@ -63,7 +64,11 @@ Configmenu::Configmenu(BScreen &scr) : Basemenu(scr), screen(scr) "Hide toolbar"), 6); update(); - setItemSelected(2, screen.getImageControl()->doDither()); + setValues(); +} + +void Configmenu::setValues() { + setItemSelected(2, screen.imageDither()); setItemSelected(3, screen.opaqueMove()); setItemSelected(4, screen.fullMax()); setItemSelected(5, screen.focusNew()); @@ -71,7 +76,7 @@ Configmenu::Configmenu(BScreen &scr) : Basemenu(scr), screen(scr) setItemSelected(7, screen.hideToolbar()); } -Configmenu::~Configmenu(void) { +Configmenu::~Configmenu() { delete focusmenu; delete placementmenu; } @@ -87,10 +92,9 @@ void Configmenu::itemSelected(int button, int index) { switch(item->function()) { case 1: { // dither - screen.getImageControl()-> - setDither((! screen.getImageControl()->doDither())); + screen.setImageDither(!screen.imageDither()); - setItemSelected(index, screen.getImageControl()->doDither()); + setItemSelected(index, screen.imageDither()); break; } @@ -130,7 +134,8 @@ void Configmenu::itemSelected(int button, int index) { } // switch } -void Configmenu::reconfigure(void) { +void Configmenu::reconfigure() { + setValues(); focusmenu->reconfigure(); placementmenu->reconfigure(); @@ -152,12 +157,21 @@ Configmenu::Focusmenu::Focusmenu(Configmenu *cm) : Basemenu(cm->screen) { "Auto Raise"), 3); update(); + setValues(); +} + +void Configmenu::Focusmenu::setValues() { setItemSelected(0, !configmenu->screen.sloppyFocus()); setItemSelected(1, configmenu->screen.sloppyFocus()); setItemEnabled(2, configmenu->screen.sloppyFocus()); setItemSelected(2, configmenu->screen.autoRaise()); } +void Configmenu::Focusmenu::reconfigure() { + setValues(); + Basemenu::reconfigure(); +} + void Configmenu::Focusmenu::itemSelected(int button, int index) { if (button != 1) return; @@ -171,32 +185,18 @@ void Configmenu::Focusmenu::itemSelected(int button, int index) { case 1: // click to focus configmenu->screen.setSloppyFocus(false); configmenu->screen.setAutoRaise(false); - - if (! configmenu->screen.getOpenbox().getFocusedWindow()) - XSetInputFocus(configmenu->screen.getOpenbox().getXDisplay(), - configmenu->screen.getToolbar()->getWindowID(), - RevertToParent, CurrentTime); - else - XSetInputFocus(configmenu->screen.getOpenbox().getXDisplay(), - configmenu->screen.getOpenbox(). - getFocusedWindow()->getClientWindow(), - RevertToParent, CurrentTime); - + // make windows all grab button1 clicks configmenu->screen.reconfigure(); - break; case 2: // sloppy focus configmenu->screen.setSloppyFocus(true); - + // make windows stop grabbing button1 clicks configmenu->screen.reconfigure(); - break; case 3: // auto raise with sloppy focus - bool change = ((configmenu->screen.autoRaise()) ? false : true); - configmenu->screen.setAutoRaise(change); - + configmenu->screen.setAutoRaise(!configmenu->screen.autoRaise()); break; } @@ -224,6 +224,12 @@ Configmenu::Placementmenu::Placementmenu(Configmenu *cm) : "Cascade Placement"), BScreen::CascadePlacement); insert(i18n->getMessage(ConfigmenuSet, ConfigmenuBestFit, "Best Fit Placement"), BScreen::BestFitPlacement); + insert(i18n->getMessage(ConfigmenuSet, ConfigmenuUnderMouse, + "Under Mouse Placement"), + BScreen::UnderMousePlacement); + insert(i18n->getMessage(ConfigmenuSet, ConfigmenuClickMouse, + "Click Mouse Placement"), + BScreen::ClickMousePlacement); insert(i18n->getMessage(ConfigmenuSet, ConfigmenuLeftRight, "Left to Right"), BScreen::LeftRight); insert(i18n->getMessage(ConfigmenuSet, ConfigmenuRightLeft, @@ -234,34 +240,41 @@ Configmenu::Placementmenu::Placementmenu(Configmenu *cm) : "Bottom to Top"), BScreen::BottomTop); update(); - switch (configmenu->screen.placementPolicy()) { - case BScreen::RowSmartPlacement: - setItemSelected(0, True); - break; - - case BScreen::ColSmartPlacement: - setItemSelected(1, True); - break; + setValues(); +} - case BScreen::CascadePlacement: - setItemSelected(2, True); - break; +void Configmenu::Placementmenu::setValues() { + const int p = configmenu->screen.placementPolicy(); + setItemSelected(0, p == BScreen::RowSmartPlacement); + setItemSelected(1, p == BScreen::ColSmartPlacement); + setItemSelected(2, p == BScreen::CascadePlacement); + setItemSelected(3, p == BScreen::BestFitPlacement); + setItemSelected(4, p == BScreen::UnderMousePlacement); + setItemSelected(5, p == BScreen::ClickMousePlacement); - case BScreen::BestFitPlacement: - setItemSelected(3, True); - break; - } - - Bool rl = (configmenu->screen.rowPlacementDirection() == + bool rl = (configmenu->screen.rowPlacementDirection() == BScreen::LeftRight), tb = (configmenu->screen.colPlacementDirection() == BScreen::TopBottom); - setItemSelected(4, rl); - setItemSelected(5, !rl); + setItemSelected(6, rl); + setItemEnabled(6, (p != BScreen::UnderMousePlacement && + p != BScreen::ClickMousePlacement)); + setItemSelected(7, !rl); + setItemEnabled(7, (p != BScreen::UnderMousePlacement && + p != BScreen::ClickMousePlacement)); + + setItemSelected(8, tb); + setItemEnabled(8, (p != BScreen::UnderMousePlacement && + p != BScreen::ClickMousePlacement)); + setItemSelected(9, !tb); + setItemEnabled(9, (p != BScreen::UnderMousePlacement && + p != BScreen::ClickMousePlacement)); +} - setItemSelected(6, tb); - setItemSelected(7, !tb); +void Configmenu::Placementmenu::reconfigure() { + setValues(); + Basemenu::reconfigure(); } void Configmenu::Placementmenu::itemSelected(int button, int index) { @@ -276,74 +289,43 @@ void Configmenu::Placementmenu::itemSelected(int button, int index) { switch (item->function()) { case BScreen::RowSmartPlacement: configmenu->screen.setPlacementPolicy(item->function()); - - setItemSelected(0, True); - setItemSelected(1, False); - setItemSelected(2, False); - setItemSelected(3, False); - break; case BScreen::ColSmartPlacement: configmenu->screen.setPlacementPolicy(item->function()); - - setItemSelected(0, False); - setItemSelected(1, True); - setItemSelected(2, False); - setItemSelected(3, False); - break; case BScreen::CascadePlacement: configmenu->screen.setPlacementPolicy(item->function()); - - setItemSelected(0, False); - setItemSelected(1, False); - setItemSelected(2, True); - setItemSelected(3, False); - break; case BScreen::BestFitPlacement: configmenu->screen.setPlacementPolicy(item->function()); + break; - setItemSelected(0, False); - setItemSelected(1, False); - setItemSelected(2, False); - setItemSelected(3, True); + case BScreen::UnderMousePlacement: + configmenu->screen.setPlacementPolicy(item->function()); + break; + case BScreen::ClickMousePlacement: + configmenu->screen.setPlacementPolicy(item->function()); break; case BScreen::LeftRight: configmenu->screen.setRowPlacementDirection(BScreen::LeftRight); - - setItemSelected(4, True); - setItemSelected(5, False); - break; case BScreen::RightLeft: configmenu->screen.setRowPlacementDirection(BScreen::RightLeft); - - setItemSelected(4, False); - setItemSelected(5, True); - break; case BScreen::TopBottom: configmenu->screen.setColPlacementDirection(BScreen::TopBottom); - - setItemSelected(5, True); - setItemSelected(6, False); - break; case BScreen::BottomTop: configmenu->screen.setColPlacementDirection(BScreen::BottomTop); - - setItemSelected(5, False); - setItemSelected(6, True); - break; } + setValues(); }