aboutsummaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Screen.cc')
-rw-r--r--src/Screen.cc52
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) {
184class TabPlacementMenuItem: public FbTk::RadioMenuItem { 184class TabPlacementMenuItem: public FbTk::RadioMenuItem {
185public: 185public:
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