aboutsummaryrefslogtreecommitdiff
path: root/src/Slit.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Slit.cc')
-rw-r--r--src/Slit.cc78
1 files changed, 36 insertions, 42 deletions
diff --git a/src/Slit.cc b/src/Slit.cc
index 210c2a5..f1e171d 100644
--- a/src/Slit.cc
+++ b/src/Slit.cc
@@ -227,12 +227,12 @@ void Slit::SlitClientsRes::pushToLua(lua::state &l) const {
227Slit::Slit(BScreen &scr, FbTk::Layer &layer) 227Slit::Slit(BScreen &scr, FbTk::Layer &layer)
228 : m_hidden(false), m_visible(false), 228 : m_hidden(false), m_visible(false),
229 m_screen(scr), 229 m_screen(scr),
230 m_clientlist_menu(scr.menuTheme(), 230 m_clientlist_menu(new FbMenu(scr.menuTheme(),
231 scr.imageControl(), 231 scr.imageControl(),
232 *scr.layerManager().getLayer(ResourceLayer::MENU)), 232 *scr.layerManager().getLayer(ResourceLayer::MENU)) ),
233 m_slitmenu(scr.menuTheme(), 233 m_slitmenu(new FbMenu(scr.menuTheme(),
234 scr.imageControl(), 234 scr.imageControl(),
235 *scr.layerManager().getLayer(ResourceLayer::MENU)), 235 *scr.layerManager().getLayer(ResourceLayer::MENU)) ),
236#ifdef XINERAMA 236#ifdef XINERAMA
237 m_xineramaheadmenu(0), 237 m_xineramaheadmenu(0),
238#endif // XINERAMA 238#endif // XINERAMA
@@ -729,7 +729,7 @@ void Slit::reconfigure() {
729 else if (!doAutoHide() && isHidden()) 729 else if (!doAutoHide() && isHidden())
730 toggleHidden(); // restore visible 730 toggleHidden(); // restore visible
731 731
732 m_slitmenu.reconfigure(); 732 m_slitmenu->reconfigure();
733 updateClientmenu(); 733 updateClientmenu();
734 updateStrut(); 734 updateStrut();
735 735
@@ -952,11 +952,11 @@ void Slit::buttonPressEvent(XButtonEvent &be) {
952 return; 952 return;
953 953
954 if (be.button == Button3) { 954 if (be.button == Button3) {
955 if (! m_slitmenu.isVisible()) { 955 if (! m_slitmenu->isVisible()) {
956 screen().placementStrategy() 956 screen().placementStrategy()
957 .placeAndShowMenu(m_slitmenu, be.x_root, be.y_root, false); 957 .placeAndShowMenu(*m_slitmenu, be.x_root, be.y_root, false);
958 } else 958 } else
959 m_slitmenu.hide(); 959 m_slitmenu->hide();
960 } 960 }
961} 961}
962 962
@@ -985,7 +985,7 @@ void Slit::leaveNotifyEvent(XCrossingEvent &ev) {
985 } else { 985 } else {
986 if (! m_timer.isTiming()) { 986 if (! m_timer.isTiming()) {
987 // the menu is open, keep it firing until it closes 987 // the menu is open, keep it firing until it closes
988 if (m_slitmenu.isVisible()) 988 if (m_slitmenu->isVisible())
989 m_timer.fireOnce(false); 989 m_timer.fireOnce(false);
990 m_timer.start(); 990 m_timer.start();
991 } 991 }
@@ -1048,7 +1048,7 @@ void Slit::clearWindow() {
1048 1048
1049void Slit::toggleHidden() { 1049void Slit::toggleHidden() {
1050 if (doAutoHide()) { 1050 if (doAutoHide()) {
1051 if (!m_slitmenu.isVisible()) { 1051 if (!m_slitmenu->isVisible()) {
1052 m_timer.fireOnce(true); 1052 m_timer.fireOnce(true);
1053 } else 1053 } else
1054 return; 1054 return;
@@ -1068,24 +1068,24 @@ void Slit::updateClientmenu() {
1068 _FB_USES_NLS; 1068 _FB_USES_NLS;
1069 1069
1070 // clear old items 1070 // clear old items
1071 m_clientlist_menu.removeAll(); 1071 m_clientlist_menu->removeAll();
1072 m_clientlist_menu.setLabel(_FB_XTEXT(Slit, ClientsMenu, "Clients", "Slit client menu")); 1072 m_clientlist_menu->setLabel(_FB_XTEXT(Slit, ClientsMenu, "Clients", "Slit client menu"));
1073 1073
1074 FbTk::RefCount<FbTk::Command<void> > cycle_up(new FbTk::SimpleCommand<Slit>(*this, &Slit::cycleClientsUp)); 1074 FbTk::RefCount<FbTk::Command<void> > cycle_up(new FbTk::SimpleCommand<Slit>(*this, &Slit::cycleClientsUp));
1075 FbTk::RefCount<FbTk::Command<void> > cycle_down(new FbTk::SimpleCommand<Slit>(*this, &Slit::cycleClientsDown)); 1075 FbTk::RefCount<FbTk::Command<void> > cycle_down(new FbTk::SimpleCommand<Slit>(*this, &Slit::cycleClientsDown));
1076 m_clientlist_menu.insert(_FB_XTEXT(Slit, CycleUp, "Cycle Up", "Cycle clients upwards"), cycle_up); 1076 m_clientlist_menu->insert(_FB_XTEXT(Slit, CycleUp, "Cycle Up", "Cycle clients upwards"), cycle_up);
1077 m_clientlist_menu.insert(_FB_XTEXT(Slit, CycleDown, "Cycle Down", "Cycle clients downwards"), cycle_down); 1077 m_clientlist_menu->insert(_FB_XTEXT(Slit, CycleDown, "Cycle Down", "Cycle clients downwards"), cycle_down);
1078 1078
1079 m_clientlist_menu.insert(new FbTk::MenuSeparator()); 1079 m_clientlist_menu->insert(new FbTk::MenuSeparator());
1080 1080
1081 FbTk::RefCount<FbTk::Command<void> > reconfig(new FbTk::SimpleCommand<Slit>(*this, &Slit::reconfigure)); 1081 FbTk::RefCount<FbTk::Command<void> > reconfig(new FbTk::SimpleCommand<Slit>(*this, &Slit::reconfigure));
1082 SlitClients::iterator it = m_client_list.begin(); 1082 SlitClients::iterator it = m_client_list.begin();
1083 for (; it != m_client_list.end(); ++it) { 1083 for (; it != m_client_list.end(); ++it) {
1084 if ((*it) != 0 && (*it)->window() != 0) 1084 if ((*it) != 0 && (*it)->window() != 0)
1085 m_clientlist_menu.insert(new SlitClientMenuItem(*this, *(*it), reconfig)); 1085 m_clientlist_menu->insert(new SlitClientMenuItem(*this, *(*it), reconfig));
1086 } 1086 }
1087 1087
1088 m_clientlist_menu.updateMenu(); 1088 m_clientlist_menu->updateMenu();
1089} 1089}
1090 1090
1091void Slit::saveClientList() { 1091void Slit::saveClientList() {
@@ -1112,39 +1112,35 @@ void Slit::setupMenu() {
1112 FbTk::RefCount<FbTk::Command<void> > save_and_reconfigure_slit(s_a_reconf_slit_macro); 1112 FbTk::RefCount<FbTk::Command<void> > save_and_reconfigure_slit(s_a_reconf_slit_macro);
1113 1113
1114 1114
1115 // it'll be freed by the slitmenu (since not marked internal) 1115 FbTk::RefCount<FbTk::Menu> placement_menu( new FbMenu(m_screen.menuTheme(),
1116 FbMenu *placement_menu = new FbMenu(m_screen.menuTheme(),
1117 m_screen.imageControl(), 1116 m_screen.imageControl(),
1118 *m_screen.layerManager().getLayer(::ResourceLayer::MENU)); 1117 *m_screen.layerManager().getLayer(::ResourceLayer::MENU)) );
1119 1118
1120 1119
1121 // setup base menu 1120 // setup base menu
1122 m_slitmenu.setLabel(_FB_XTEXT(Slit, Slit, "Slit", "The Slit")); 1121 m_slitmenu->setLabel(_FB_XTEXT(Slit, Slit, "Slit", "The Slit"));
1123 m_slitmenu.insert(_FB_XTEXT(Menu, Placement, "Placement", "Title of Placement menu"), 1122 m_slitmenu->insert(_FB_XTEXT(Menu, Placement, "Placement", "Title of Placement menu"),
1124 placement_menu); 1123 placement_menu);
1125 1124
1126 m_slitmenu.insert(_FB_XTEXT(Menu, Layer, "Layer...", "Title of Layer menu"), m_layermenu.get()); 1125 m_slitmenu->insert(_FB_XTEXT(Menu, Layer, "Layer...", "Title of Layer menu"),
1126 FbTk::RefCount<FbTk::Menu>(m_layermenu) );
1127 1127
1128#ifdef XINERAMA 1128#ifdef XINERAMA
1129 if (screen().hasXinerama()) { 1129 if (screen().hasXinerama()) {
1130 m_slitmenu.insert(_FB_XTEXT(Menu, OnHead, "On Head...", "Title of On Head menu"), 1130 m_xineramaheadmenu.reset( new XineramaHeadMenu<Slit>(
1131 m_xineramaheadmenu = 1131 screen().menuTheme(), screen(), screen().imageControl(),
1132 new XineramaHeadMenu<Slit>( 1132 *screen().layerManager().getLayer(::ResourceLayer::MENU), *this,
1133 screen().menuTheme(), 1133 _FB_XTEXT(Slit, OnHead, "Slit on Head", "Title of Slits On Head menu")) );
1134 screen(), 1134 m_slitmenu->insert(_FB_XTEXT(Menu, OnHead, "On Head...", "Title of On Head menu"),
1135 screen().imageControl(), 1135 FbTk::RefCount<FbTk::Menu>(m_xineramaheadmenu));
1136 *screen().layerManager().getLayer(::ResourceLayer::MENU),
1137 *this,
1138 _FB_XTEXT(Slit, OnHead, "Slit on Head", "Title of Slits On Head menu")
1139 ));
1140 } 1136 }
1141#endif //XINERAMA 1137#endif //XINERAMA
1142 1138
1143 m_slitmenu.insert(new FbTk::BoolMenuItem(_FB_XTEXT(Common, AutoHide, "Auto hide", "This thing automatically hides when not close by"), 1139 m_slitmenu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Common, AutoHide, "Auto hide", "This thing automatically hides when not close by"),
1144 m_rc_auto_hide, 1140 m_rc_auto_hide,
1145 save_and_reconfigure_slit)); 1141 save_and_reconfigure_slit));
1146 1142
1147 m_slitmenu.insert(new FbTk::BoolMenuItem(_FB_XTEXT(Common, MaximizeOver,"Maximize Over", "Maximize over this thing when maximizing"), 1143 m_slitmenu->insert(new FbTk::BoolMenuItem(_FB_XTEXT(Common, MaximizeOver,"Maximize Over", "Maximize over this thing when maximizing"),
1148 m_rc_maximize_over, 1144 m_rc_maximize_over,
1149 save_and_reconfigure_slit)); 1145 save_and_reconfigure_slit));
1150 1146
@@ -1152,7 +1148,7 @@ void Slit::setupMenu() {
1152 FbTk::MenuItem *alpha_menuitem = 1148 FbTk::MenuItem *alpha_menuitem =
1153 new FbTk::IntMenuItem(_FB_XTEXT(Common, Alpha, "Alpha", "Transparency level"), 1149 new FbTk::IntMenuItem(_FB_XTEXT(Common, Alpha, "Alpha", "Transparency level"),
1154 m_rc_alpha, 1150 m_rc_alpha,
1155 0, 255, m_slitmenu); 1151 0, 255, *m_slitmenu);
1156 // setup command for alpha value 1152 // setup command for alpha value
1157 MacroCommand *alpha_macrocmd = new MacroCommand(); 1153 MacroCommand *alpha_macrocmd = new MacroCommand();
1158 RefCount<Command<void> > alpha_cmd(new SimpleCommand<Slit>(*this, &Slit::updateAlpha)); 1154 RefCount<Command<void> > alpha_cmd(new SimpleCommand<Slit>(*this, &Slit::updateAlpha));
@@ -1161,17 +1157,15 @@ void Slit::setupMenu() {
1161 RefCount<Command<void> > set_alpha_cmd(alpha_macrocmd); 1157 RefCount<Command<void> > set_alpha_cmd(alpha_macrocmd);
1162 alpha_menuitem->setCommand(set_alpha_cmd); 1158 alpha_menuitem->setCommand(set_alpha_cmd);
1163 1159
1164 m_slitmenu.insert(alpha_menuitem); 1160 m_slitmenu->insert(alpha_menuitem);
1165 1161
1166 m_slitmenu.insert(_FB_XTEXT(Slit, ClientsMenu, "Clients", "Slit client menu"), &m_clientlist_menu); 1162 m_slitmenu->insert(_FB_XTEXT(Slit, ClientsMenu, "Clients", "Slit client menu"),
1167 m_slitmenu.updateMenu(); 1163 FbTk::RefCount<FbTk::Menu>(m_clientlist_menu) );
1164 m_slitmenu->updateMenu();
1168 1165
1169 // setup sub menu 1166 // setup sub menu
1170 placement_menu->setLabel(_FB_XTEXT(Slit, Placement, "Slit Placement", "Slit Placement")); 1167 placement_menu->setLabel(_FB_XTEXT(Slit, Placement, "Slit Placement", "Slit Placement"));
1171 placement_menu->setMinimumColumns(3); 1168 placement_menu->setMinimumColumns(3);
1172 m_layermenu->setInternalMenu();
1173 m_clientlist_menu.setInternalMenu();
1174 m_slitmenu.setInternalMenu();
1175 1169
1176 typedef pair<FbTk::FbString, Slit::Placement> PlacementP; 1170 typedef pair<FbTk::FbString, Slit::Placement> PlacementP;
1177 typedef list<PlacementP> Placements; 1171 typedef list<PlacementP> Placements;