diff options
Diffstat (limited to 'src/Screen.cc')
-rw-r--r-- | src/Screen.cc | 52 |
1 files changed, 21 insertions, 31 deletions
diff --git a/src/Screen.cc b/src/Screen.cc index 1e3d1c4..1acefc1 100644 --- a/src/Screen.cc +++ b/src/Screen.cc | |||
@@ -184,9 +184,8 @@ int calcSquareDistance(int x1, int y1, int x2, int y2) { | |||
184 | class TabPlacementMenuItem: public FbTk::RadioMenuItem { | 184 | class TabPlacementMenuItem: public FbTk::RadioMenuItem { |
185 | public: | 185 | public: |
186 | TabPlacementMenuItem(const FbTk::FbString & label, BScreen &screen, | 186 | TabPlacementMenuItem(const FbTk::FbString & label, BScreen &screen, |
187 | FbWinFrame::TabPlacement place, | 187 | FbWinFrame::TabPlacement place): |
188 | FbTk::RefCount<FbTk::Command<void> > &cmd): | 188 | FbTk::RadioMenuItem(label), |
189 | FbTk::RadioMenuItem(label, cmd), | ||
190 | m_screen(screen), | 189 | m_screen(screen), |
191 | m_place(place) { | 190 | m_place(place) { |
192 | setCloseOnClick(false); | 191 | setCloseOnClick(false); |
@@ -1442,15 +1441,8 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) { | |||
1442 | 1441 | ||
1443 | menu.removeAll(); | 1442 | menu.removeAll(); |
1444 | 1443 | ||
1445 | FbTk::MacroCommand *s_a_reconf_macro = new FbTk::MacroCommand(); | ||
1446 | FbTk::RefCount<FbTk::Command<void> > saverc_cmd(new FbTk::SimpleCommand<Fluxbox>( | ||
1447 | *Fluxbox::instance(), | ||
1448 | &Fluxbox::save_rc)); | ||
1449 | FbTk::RefCount<FbTk::Command<void> > reconf_cmd(FbTk::CommandParser<void>::instance().parse("reconfigure")); | 1444 | FbTk::RefCount<FbTk::Command<void> > reconf_cmd(FbTk::CommandParser<void>::instance().parse("reconfigure")); |
1450 | 1445 | ||
1451 | s_a_reconf_macro->add(saverc_cmd); | ||
1452 | s_a_reconf_macro->add(reconf_cmd); | ||
1453 | FbTk::RefCount<FbTk::Command<void> > save_and_reconfigure(s_a_reconf_macro); | ||
1454 | // create focus menu | 1446 | // create focus menu |
1455 | // we don't set this to internal menu so will | 1447 | // we don't set this to internal menu so will |
1456 | // be deleted toghether with the parent | 1448 | // be deleted toghether with the parent |
@@ -1459,12 +1451,12 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) { | |||
1459 | "Method used to give focus to windows"); | 1451 | "Method used to give focus to windows"); |
1460 | FbTk::RefCount<FbTk::Menu> focus_menu( createMenu(focusmenu_label) ); | 1452 | FbTk::RefCount<FbTk::Menu> focus_menu( createMenu(focusmenu_label) ); |
1461 | 1453 | ||
1462 | #define _BOOLITEM(m,a, b, c, d, e, f) (m).insert(new FbTk::BoolMenuItem(_FB_XTEXT(a, b, c, d), e, f)) | 1454 | #define _BOOLITEM(m,a, b, c, d, e) (m).insert(new FbTk::BoolMenuItem(_FB_XTEXT(a, b, c, d), e)) |
1463 | 1455 | ||
1464 | 1456 | ||
1465 | #define _FOCUSITEM(a, b, c, d, e) \ | 1457 | #define _FOCUSITEM(a, b, c, d, e) \ |
1466 | focus_menu->insert(new FocusModelMenuItem(_FB_XTEXT(a, b, c, d), focusControl(), \ | 1458 | focus_menu->insert(new FocusModelMenuItem(_FB_XTEXT(a, b, c, d), focusControl(), \ |
1467 | e, save_and_reconfigure)) | 1459 | e, reconf_cmd)) |
1468 | 1460 | ||
1469 | _FOCUSITEM(Configmenu, ClickFocus, | 1461 | _FOCUSITEM(Configmenu, ClickFocus, |
1470 | "Click To Focus", "Click to focus", | 1462 | "Click To Focus", "Click to focus", |
@@ -1482,27 +1474,26 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) { | |||
1482 | focus_menu->insert(new FbTk::MenuSeparator()); | 1474 | focus_menu->insert(new FbTk::MenuSeparator()); |
1483 | focus_menu->insert(new TabFocusModelMenuItem(_FB_XTEXT(Configmenu, | 1475 | focus_menu->insert(new TabFocusModelMenuItem(_FB_XTEXT(Configmenu, |
1484 | ClickTabFocus, "ClickTabFocus", "Click tab to focus windows"), | 1476 | ClickTabFocus, "ClickTabFocus", "Click tab to focus windows"), |
1485 | focusControl(), FocusControl::CLICKTABFOCUS, save_and_reconfigure)); | 1477 | focusControl(), FocusControl::CLICKTABFOCUS, reconf_cmd)); |
1486 | focus_menu->insert(new TabFocusModelMenuItem(_FB_XTEXT(Configmenu, | 1478 | focus_menu->insert(new TabFocusModelMenuItem(_FB_XTEXT(Configmenu, |
1487 | MouseTabFocus, "MouseTabFocus", "Hover over tab to focus windows"), | 1479 | MouseTabFocus, "MouseTabFocus", "Hover over tab to focus windows"), |
1488 | focusControl(), FocusControl::MOUSETABFOCUS, save_and_reconfigure)); | 1480 | focusControl(), FocusControl::MOUSETABFOCUS, reconf_cmd)); |
1489 | focus_menu->insert(new FbTk::MenuSeparator()); | 1481 | focus_menu->insert(new FbTk::MenuSeparator()); |
1490 | 1482 | ||
1491 | try { | 1483 | try { |
1492 | focus_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, FocusNew, | 1484 | focus_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, FocusNew, |
1493 | "Focus New Windows", "Focus newly created windows"), | 1485 | "Focus New Windows", "Focus newly created windows"), |
1494 | m_resource_manager.getResource<bool, FbTk::BoolTraits>(name() + ".focusNewWindows"), | 1486 | m_resource_manager.getResource<bool, FbTk::BoolTraits>(name() + ".focusNewWindows"))); |
1495 | saverc_cmd)); | ||
1496 | } catch (FbTk::ResourceException e) { | 1487 | } catch (FbTk::ResourceException e) { |
1497 | cerr<<e.what()<<endl; | 1488 | cerr<<e.what()<<endl; |
1498 | } | 1489 | } |
1499 | 1490 | ||
1500 | _BOOLITEM(*focus_menu, Configmenu, AutoRaise, | 1491 | _BOOLITEM(*focus_menu, Configmenu, AutoRaise, |
1501 | "Auto Raise", "Auto Raise windows on sloppy", | 1492 | "Auto Raise", "Auto Raise windows on sloppy", |
1502 | resource.auto_raise, saverc_cmd); | 1493 | resource.auto_raise); |
1503 | _BOOLITEM(*focus_menu, Configmenu, ClickRaises, | 1494 | _BOOLITEM(*focus_menu, Configmenu, ClickRaises, |
1504 | "Click Raises", "Click Raises", | 1495 | "Click Raises", "Click Raises", |
1505 | resource.click_raises, saverc_cmd); | 1496 | resource.click_raises); |
1506 | 1497 | ||
1507 | focus_menu->updateMenu(); | 1498 | focus_menu->updateMenu(); |
1508 | 1499 | ||
@@ -1518,17 +1509,17 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) { | |||
1518 | 1509 | ||
1519 | _BOOLITEM(*maxmenu, Configmenu, FullMax, | 1510 | _BOOLITEM(*maxmenu, Configmenu, FullMax, |
1520 | "Full Maximization", "Maximise over slit, toolbar, etc", | 1511 | "Full Maximization", "Maximise over slit, toolbar, etc", |
1521 | resource.full_max, saverc_cmd); | 1512 | resource.full_max); |
1522 | _BOOLITEM(*maxmenu, Configmenu, MaxIgnoreInc, | 1513 | _BOOLITEM(*maxmenu, Configmenu, MaxIgnoreInc, |
1523 | "Ignore Resize Increment", | 1514 | "Ignore Resize Increment", |
1524 | "Maximizing Ignores Resize Increment (e.g. xterm)", | 1515 | "Maximizing Ignores Resize Increment (e.g. xterm)", |
1525 | resource.max_ignore_inc, saverc_cmd); | 1516 | resource.max_ignore_inc); |
1526 | _BOOLITEM(*maxmenu, Configmenu, MaxDisableMove, | 1517 | _BOOLITEM(*maxmenu, Configmenu, MaxDisableMove, |
1527 | "Disable Moving", "Don't Allow Moving While Maximized", | 1518 | "Disable Moving", "Don't Allow Moving While Maximized", |
1528 | resource.max_disable_move, saverc_cmd); | 1519 | resource.max_disable_move); |
1529 | _BOOLITEM(*maxmenu, Configmenu, MaxDisableResize, | 1520 | _BOOLITEM(*maxmenu, Configmenu, MaxDisableResize, |
1530 | "Disable Resizing", "Don't Allow Resizing While Maximized", | 1521 | "Disable Resizing", "Don't Allow Resizing While Maximized", |
1531 | resource.max_disable_resize, saverc_cmd); | 1522 | resource.max_disable_resize); |
1532 | 1523 | ||
1533 | maxmenu->updateMenu(); | 1524 | maxmenu->updateMenu(); |
1534 | menu.insert(maxmenu_label, maxmenu); | 1525 | menu.insert(maxmenu_label, maxmenu); |
@@ -1548,13 +1539,13 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) { | |||
1548 | 1539 | ||
1549 | _BOOLITEM(*tab_menu,Configmenu, TabsInTitlebar, | 1540 | _BOOLITEM(*tab_menu,Configmenu, TabsInTitlebar, |
1550 | "Tabs in Titlebar", "Tabs in Titlebar", | 1541 | "Tabs in Titlebar", "Tabs in Titlebar", |
1551 | resource.default_internal_tabs, saverc_cmd); | 1542 | resource.default_internal_tabs); |
1552 | tab_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Common, MaximizeOver, | 1543 | tab_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Common, MaximizeOver, |
1553 | "Maximize Over", "Maximize over this thing when maximizing"), | 1544 | "Maximize Over", "Maximize over this thing when maximizing"), |
1554 | resource.max_over_tabs, save_and_reconfigure)); | 1545 | resource.max_over_tabs, reconf_cmd)); |
1555 | tab_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Toolbar, ShowIcons, | 1546 | tab_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Toolbar, ShowIcons, |
1556 | "Show Pictures", "chooses if little icons are shown next to title in the iconbar"), | 1547 | "Show Pictures", "chooses if little icons are shown next to title in the iconbar"), |
1557 | resource.tabs_use_pixmap, save_and_reconfigure)); | 1548 | resource.tabs_use_pixmap, reconf_cmd)); |
1558 | 1549 | ||
1559 | FbTk::MenuItem *tab_width_item = | 1550 | FbTk::MenuItem *tab_width_item = |
1560 | new FbTk::IntMenuItem(_FB_XTEXT(Configmenu, ExternalTabWidth, | 1551 | new FbTk::IntMenuItem(_FB_XTEXT(Configmenu, ExternalTabWidth, |
@@ -1562,7 +1553,6 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) { | |||
1562 | "Width of external-style tabs"), | 1553 | "Width of external-style tabs"), |
1563 | resource.tab_width, 10, 3000, /* silly number */ | 1554 | resource.tab_width, 10, 3000, /* silly number */ |
1564 | *tab_menu); | 1555 | *tab_menu); |
1565 | tab_width_item->setCommand(saverc_cmd); | ||
1566 | tab_menu->insert(tab_width_item); | 1556 | tab_menu->insert(tab_width_item); |
1567 | 1557 | ||
1568 | // menu is 3 wide, 5 down | 1558 | // menu is 3 wide, 5 down |
@@ -1597,7 +1587,7 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) { | |||
1597 | tabplacement_menu->insert(p.label); | 1587 | tabplacement_menu->insert(p.label); |
1598 | tabplacement_menu->setItemEnabled(i, false); | 1588 | tabplacement_menu->setItemEnabled(i, false); |
1599 | } else | 1589 | } else |
1600 | tabplacement_menu->insert(new TabPlacementMenuItem(p.label, *this, p.placement, saverc_cmd)); | 1590 | tabplacement_menu->insert(new TabPlacementMenuItem(p.label, *this, p.placement)); |
1601 | } | 1591 | } |
1602 | tabplacement_menu->updateMenu(); | 1592 | tabplacement_menu->updateMenu(); |
1603 | 1593 | ||
@@ -1616,13 +1606,13 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) { | |||
1616 | alpha_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, ForcePseudoTrans, | 1606 | alpha_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, ForcePseudoTrans, |
1617 | "Force Pseudo-Transparency", | 1607 | "Force Pseudo-Transparency", |
1618 | "When composite is available, still use old pseudo-transparency"), | 1608 | "When composite is available, still use old pseudo-transparency"), |
1619 | Fluxbox::instance()->getPseudoTransResource(), save_and_reconfigure)); | 1609 | Fluxbox::instance()->getPseudoTransResource(), reconf_cmd)); |
1620 | } | 1610 | } |
1621 | 1611 | ||
1622 | // in order to save system resources, don't save or reconfigure alpha | 1612 | // in order to save system resources, don't save or reconfigure alpha |
1623 | // settings until after the user is done changing them | 1613 | // settings until after the user is done changing them |
1624 | FbTk::RefCount<FbTk::Command<void> > delayed_save_and_reconf( | 1614 | FbTk::RefCount<FbTk::Command<void> > delayed_save_and_reconf( |
1625 | new FbTk::DelayedCmd(save_and_reconfigure)); | 1615 | new FbTk::DelayedCmd(reconf_cmd)); |
1626 | 1616 | ||
1627 | FbTk::MenuItem *focused_alpha_item = | 1617 | FbTk::MenuItem *focused_alpha_item = |
1628 | new FbTk::IntMenuItem(_FB_XTEXT(Configmenu, FocusedAlpha, | 1618 | new FbTk::IntMenuItem(_FB_XTEXT(Configmenu, FocusedAlpha, |
@@ -1662,11 +1652,11 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) { | |||
1662 | _BOOLITEM(menu, Configmenu, OpaqueMove, | 1652 | _BOOLITEM(menu, Configmenu, OpaqueMove, |
1663 | "Opaque Window Moving", | 1653 | "Opaque Window Moving", |
1664 | "Window Moving with whole window visible (as opposed to outline moving)", | 1654 | "Window Moving with whole window visible (as opposed to outline moving)", |
1665 | resource.opaque_move, saverc_cmd); | 1655 | resource.opaque_move); |
1666 | _BOOLITEM(menu, Configmenu, WorkspaceWarping, | 1656 | _BOOLITEM(menu, Configmenu, WorkspaceWarping, |
1667 | "Workspace Warping", | 1657 | "Workspace Warping", |
1668 | "Workspace Warping - dragging windows to the edge and onto the next workspace", | 1658 | "Workspace Warping - dragging windows to the edge and onto the next workspace", |
1669 | resource.workspace_warping, saverc_cmd); | 1659 | resource.workspace_warping); |
1670 | 1660 | ||
1671 | #undef _BOOLITEM | 1661 | #undef _BOOLITEM |
1672 | 1662 | ||