aboutsummaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
authorMathias Gumz <akira@fluxbox.org>2015-01-15 13:24:46 (GMT)
committerMathias Gumz <akira@fluxbox.org>2015-01-15 13:25:05 (GMT)
commit8387742c8860694777f7c2c62da0a90c9e836988 (patch)
treee5bd5a50c3e033ea73a9339474750287d06aeb3f /src/Screen.cc
parentb4cd45549013e8b45f95bf3e123cd14684948e91 (diff)
downloadfluxbox-8387742c8860694777f7c2c62da0a90c9e836988.zip
fluxbox-8387742c8860694777f7c2c62da0a90c9e836988.tar.bz2
Refactor menu code: be more explicit and compact
This commit is a preparation step for some menu cleanup ahead. To make it easier to understand which types of MenuItems are added where and when, I converted the overloaded FbTk::Menu::insert() functions into explicit ones (Menu::insertSubmenu(), Menu::insertItem(), etc. ). This makes it possible to just grep for 'insertSubmenu()'. Side effect this commit: it trims down the very verbose creation of menu items in regards to how the labels are created. Minor: FbTk::Menu::shown and FbTk::Menu::s_focused are moved out of the class.
Diffstat (limited to 'src/Screen.cc')
-rw-r--r--src/Screen.cc52
1 files changed, 25 insertions, 27 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index 1a42f33..bd99868 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -1443,12 +1443,10 @@ void BScreen::rereadMenu() {
1443 FbTk::RefCount<FbTk::Command<void> > exit_fb(FbTk::CommandParser<void>::instance().parse("exit")); 1443 FbTk::RefCount<FbTk::Command<void> > exit_fb(FbTk::CommandParser<void>::instance().parse("exit"));
1444 FbTk::RefCount<FbTk::Command<void> > execute_xterm(FbTk::CommandParser<void>::instance().parse("exec xterm")); 1444 FbTk::RefCount<FbTk::Command<void> > execute_xterm(FbTk::CommandParser<void>::instance().parse("exec xterm"));
1445 m_rootmenu->setInternalMenu(); 1445 m_rootmenu->setInternalMenu();
1446 m_rootmenu->insert("xterm", execute_xterm); 1446 m_rootmenu->insertCommand("xterm", execute_xterm);
1447 m_rootmenu->insert(_FB_XTEXT(Menu, Reconfigure, "Reconfigure", 1447 m_rootmenu->insertCommand(_FB_XTEXT(Menu, Restart, "Restart", "Restart command"),
1448 "Reload Configuration command")),
1449 m_rootmenu->insert(_FB_XTEXT(Menu, Restart, "Restart", "Restart command"),
1450 restart_fb); 1448 restart_fb);
1451 m_rootmenu->insert(_FB_XTEXT(Menu, Exit, "Exit", "Exit command"), 1449 m_rootmenu->insertCommand(_FB_XTEXT(Menu, Exit, "Exit", "Exit command"),
1452 exit_fb); 1450 exit_fb);
1453 } 1451 }
1454 1452
@@ -1571,11 +1569,11 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1571 "Method used to give focus to windows"); 1569 "Method used to give focus to windows");
1572 FbTk::Menu *focus_menu = createMenu(focusmenu_label); 1570 FbTk::Menu *focus_menu = createMenu(focusmenu_label);
1573 1571
1574#define _BOOLITEM(m,a, b, c, d, e, f) (m).insert(new FbTk::BoolMenuItem(_FB_XTEXT(a, b, c, d), e, f)) 1572#define _BOOLITEM(m,a, b, c, d, e, f) (m).insertItem(new FbTk::BoolMenuItem(_FB_XTEXT(a, b, c, d), e, f))
1575 1573
1576 1574
1577#define _FOCUSITEM(a, b, c, d, e) \ 1575#define _FOCUSITEM(a, b, c, d, e) \
1578 focus_menu->insert(new FocusModelMenuItem(_FB_XTEXT(a, b, c, d), focusControl(), \ 1576 focus_menu->insertItem(new FocusModelMenuItem(_FB_XTEXT(a, b, c, d), focusControl(), \
1579 e, save_and_reconfigure)) 1577 e, save_and_reconfigure))
1580 1578
1581 _FOCUSITEM(Configmenu, ClickFocus, 1579 _FOCUSITEM(Configmenu, ClickFocus,
@@ -1591,17 +1589,17 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1591 FocusControl::STRICTMOUSEFOCUS); 1589 FocusControl::STRICTMOUSEFOCUS);
1592#undef _FOCUSITEM 1590#undef _FOCUSITEM
1593 1591
1594 focus_menu->insert(new FbTk::MenuSeparator()); 1592 focus_menu->insertItem(new FbTk::MenuSeparator());
1595 focus_menu->insert(new TabFocusModelMenuItem(_FB_XTEXT(Configmenu, 1593 focus_menu->insertItem(new TabFocusModelMenuItem(_FB_XTEXT(Configmenu,
1596 ClickTabFocus, "ClickTabFocus", "Click tab to focus windows"), 1594 ClickTabFocus, "ClickTabFocus", "Click tab to focus windows"),
1597 focusControl(), FocusControl::CLICKTABFOCUS, save_and_reconfigure)); 1595 focusControl(), FocusControl::CLICKTABFOCUS, save_and_reconfigure));
1598 focus_menu->insert(new TabFocusModelMenuItem(_FB_XTEXT(Configmenu, 1596 focus_menu->insertItem(new TabFocusModelMenuItem(_FB_XTEXT(Configmenu,
1599 MouseTabFocus, "MouseTabFocus", "Hover over tab to focus windows"), 1597 MouseTabFocus, "MouseTabFocus", "Hover over tab to focus windows"),
1600 focusControl(), FocusControl::MOUSETABFOCUS, save_and_reconfigure)); 1598 focusControl(), FocusControl::MOUSETABFOCUS, save_and_reconfigure));
1601 focus_menu->insert(new FbTk::MenuSeparator()); 1599 focus_menu->insertItem(new FbTk::MenuSeparator());
1602 1600
1603 try { 1601 try {
1604 focus_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, FocusNew, 1602 focus_menu->insertItem(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, FocusNew,
1605 "Focus New Windows", "Focus newly created windows"), 1603 "Focus New Windows", "Focus newly created windows"),
1606 m_resource_manager.getResource<bool>(name() + ".focusNewWindows"), 1604 m_resource_manager.getResource<bool>(name() + ".focusNewWindows"),
1607 saverc_cmd)); 1605 saverc_cmd));
@@ -1611,7 +1609,7 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1611 1609
1612#ifdef XINERAMA 1610#ifdef XINERAMA
1613 try { 1611 try {
1614 focus_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, FocusSameHead, 1612 focus_menu->insertItem(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, FocusSameHead,
1615 "Keep Head", "Only revert focus on same head"), 1613 "Keep Head", "Only revert focus on same head"),
1616 m_resource_manager.getResource<bool>(name() + ".focusSameHead"), 1614 m_resource_manager.getResource<bool>(name() + ".focusSameHead"),
1617 saverc_cmd)); 1615 saverc_cmd));
@@ -1629,7 +1627,7 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1629 1627
1630 focus_menu->updateMenu(); 1628 focus_menu->updateMenu();
1631 1629
1632 menu.insert(focusmenu_label, focus_menu); 1630 menu.insertSubmenu(focusmenu_label, focus_menu);
1633 1631
1634 // END focus menu 1632 // END focus menu
1635 1633
@@ -1654,7 +1652,7 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1654 resource.max_disable_resize, saverc_cmd); 1652 resource.max_disable_resize, saverc_cmd);
1655 1653
1656 maxmenu->updateMenu(); 1654 maxmenu->updateMenu();
1657 menu.insert(maxmenu_label, maxmenu); 1655 menu.insertSubmenu(maxmenu_label, maxmenu);
1658 1656
1659 // END maximize menu 1657 // END maximize menu
1660 1658
@@ -1667,15 +1665,15 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1667 FbTk::FbString tabplacement_label = _FB_XTEXT(Menu, Placement, "Placement", "Title of Placement menu"); 1665 FbTk::FbString tabplacement_label = _FB_XTEXT(Menu, Placement, "Placement", "Title of Placement menu");
1668 FbTk::Menu *tabplacement_menu = createToggleMenu(tabplacement_label); 1666 FbTk::Menu *tabplacement_menu = createToggleMenu(tabplacement_label);
1669 1667
1670 tab_menu->insert(tabplacement_label, tabplacement_menu); 1668 tab_menu->insertSubmenu(tabplacement_label, tabplacement_menu);
1671 1669
1672 _BOOLITEM(*tab_menu,Configmenu, TabsInTitlebar, 1670 _BOOLITEM(*tab_menu,Configmenu, TabsInTitlebar,
1673 "Tabs in Titlebar", "Tabs in Titlebar", 1671 "Tabs in Titlebar", "Tabs in Titlebar",
1674 resource.default_internal_tabs, save_and_reconftabs); 1672 resource.default_internal_tabs, save_and_reconftabs);
1675 tab_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Common, MaximizeOver, 1673 tab_menu->insertItem(new FbTk::BoolMenuItem(_FB_XTEXT(Common, MaximizeOver,
1676 "Maximize Over", "Maximize over this thing when maximizing"), 1674 "Maximize Over", "Maximize over this thing when maximizing"),
1677 resource.max_over_tabs, save_and_reconfigure)); 1675 resource.max_over_tabs, save_and_reconfigure));
1678 tab_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Toolbar, ShowIcons, 1676 tab_menu->insertItem(new FbTk::BoolMenuItem(_FB_XTEXT(Toolbar, ShowIcons,
1679 "Show Pictures", "chooses if little icons are shown next to title in the iconbar"), 1677 "Show Pictures", "chooses if little icons are shown next to title in the iconbar"),
1680 resource.tabs_use_pixmap, save_and_reconfigure)); 1678 resource.tabs_use_pixmap, save_and_reconfigure));
1681 1679
@@ -1686,7 +1684,7 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1686 resource.tab_width, 10, 3000, /* silly number */ 1684 resource.tab_width, 10, 3000, /* silly number */
1687 *tab_menu); 1685 *tab_menu);
1688 tab_width_item->setCommand(save_and_reconftabs); 1686 tab_width_item->setCommand(save_and_reconftabs);
1689 tab_menu->insert(tab_width_item); 1687 tab_menu->insertItem(tab_width_item);
1690 1688
1691 // menu is 3 wide, 5 down 1689 // menu is 3 wide, 5 down
1692 struct PlacementP { 1690 struct PlacementP {
@@ -1720,11 +1718,11 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1720 tabplacement_menu->insert(p.label); 1718 tabplacement_menu->insert(p.label);
1721 tabplacement_menu->setItemEnabled(i, false); 1719 tabplacement_menu->setItemEnabled(i, false);
1722 } else 1720 } else
1723 tabplacement_menu->insert(new TabPlacementMenuItem(p.label, *this, p.placement, save_and_reconftabs)); 1721 tabplacement_menu->insertItem(new TabPlacementMenuItem(p.label, *this, p.placement, save_and_reconftabs));
1724 } 1722 }
1725 tabplacement_menu->updateMenu(); 1723 tabplacement_menu->updateMenu();
1726 1724
1727 menu.insert(tabmenu_label, tab_menu); 1725 menu.insertSubmenu(tabmenu_label, tab_menu);
1728 1726
1729#ifdef HAVE_XRENDER 1727#ifdef HAVE_XRENDER
1730 if (FbTk::Transparent::haveRender() || 1728 if (FbTk::Transparent::haveRender() ||
@@ -1737,7 +1735,7 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1737 1735
1738 if (FbTk::Transparent::haveComposite(true)) { 1736 if (FbTk::Transparent::haveComposite(true)) {
1739 static FbTk::SimpleAccessor<bool> s_pseudo(Fluxbox::instance()->getPseudoTrans()); 1737 static FbTk::SimpleAccessor<bool> s_pseudo(Fluxbox::instance()->getPseudoTrans());
1740 alpha_menu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, ForcePseudoTrans, 1738 alpha_menu->insertItem(new FbTk::BoolMenuItem(_FB_XTEXT(Configmenu, ForcePseudoTrans,
1741 "Force Pseudo-Transparency", 1739 "Force Pseudo-Transparency",
1742 "When composite is available, still use old pseudo-transparency"), 1740 "When composite is available, still use old pseudo-transparency"),
1743 s_pseudo, save_and_reconfigure)); 1741 s_pseudo, save_and_reconfigure));
@@ -1754,7 +1752,7 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1754 "Transparency level of the focused window"), 1752 "Transparency level of the focused window"),
1755 resource.focused_alpha, 0, 255, *alpha_menu); 1753 resource.focused_alpha, 0, 255, *alpha_menu);
1756 focused_alpha_item->setCommand(delayed_save_and_reconf); 1754 focused_alpha_item->setCommand(delayed_save_and_reconf);
1757 alpha_menu->insert(focused_alpha_item); 1755 alpha_menu->insertItem(focused_alpha_item);
1758 1756
1759 FbTk::MenuItem *unfocused_alpha_item = 1757 FbTk::MenuItem *unfocused_alpha_item =
1760 new FbTk::IntMenuItem(_FB_XTEXT(Configmenu, 1758 new FbTk::IntMenuItem(_FB_XTEXT(Configmenu,
@@ -1764,24 +1762,24 @@ void BScreen::setupConfigmenu(FbTk::Menu &menu) {
1764 1762
1765 resource.unfocused_alpha, 0, 255, *alpha_menu); 1763 resource.unfocused_alpha, 0, 255, *alpha_menu);
1766 unfocused_alpha_item->setCommand(delayed_save_and_reconf); 1764 unfocused_alpha_item->setCommand(delayed_save_and_reconf);
1767 alpha_menu->insert(unfocused_alpha_item); 1765 alpha_menu->insertItem(unfocused_alpha_item);
1768 1766
1769 FbTk::MenuItem *menu_alpha_item = 1767 FbTk::MenuItem *menu_alpha_item =
1770 new FbTk::IntMenuItem(_FB_XTEXT(Configmenu, MenuAlpha, 1768 new FbTk::IntMenuItem(_FB_XTEXT(Configmenu, MenuAlpha,
1771 "Menu Alpha", "Transparency level of menu"), 1769 "Menu Alpha", "Transparency level of menu"),
1772 resource.menu_alpha, 0, 255, *alpha_menu); 1770 resource.menu_alpha, 0, 255, *alpha_menu);
1773 menu_alpha_item->setCommand(delayed_save_and_reconf); 1771 menu_alpha_item->setCommand(delayed_save_and_reconf);
1774 alpha_menu->insert(menu_alpha_item); 1772 alpha_menu->insertItem(menu_alpha_item);
1775 1773
1776 alpha_menu->updateMenu(); 1774 alpha_menu->updateMenu();
1777 menu.insert(alphamenu_label, alpha_menu); 1775 menu.insertSubmenu(alphamenu_label, alpha_menu);
1778 } 1776 }
1779#endif // HAVE_XRENDER 1777#endif // HAVE_XRENDER
1780 1778
1781 Configmenus::iterator it = m_configmenu_list.begin(); 1779 Configmenus::iterator it = m_configmenu_list.begin();
1782 Configmenus::iterator it_end = m_configmenu_list.end(); 1780 Configmenus::iterator it_end = m_configmenu_list.end();
1783 for (; it != it_end; ++it) 1781 for (; it != it_end; ++it)
1784 menu.insert(it->first, it->second); 1782 menu.insertSubmenu(it->first, it->second);
1785 1783
1786 _BOOLITEM(menu, Configmenu, OpaqueMove, 1784 _BOOLITEM(menu, Configmenu, OpaqueMove,
1787 "Opaque Window Moving", 1785 "Opaque Window Moving",