aboutsummaryrefslogtreecommitdiff
path: root/src/Screen.cc
diff options
context:
space:
mode:
authorPavel Labath <pavelo@centrum.sk>2011-07-01 21:30:54 (GMT)
committerPavel Labath <pavelo@centrum.sk>2011-11-01 09:57:20 (GMT)
commitd5bef134ea20a2670d383492977b4d152e24464a (patch)
treeada21c716f8a4ea15a920ce9c90186c353f1d77e /src/Screen.cc
parent038ac98a8571cb621f92acc5a4f8ae04eef520a4 (diff)
downloadfluxbox_pavel-d5bef134ea20a2670d383492977b4d152e24464a.zip
fluxbox_pavel-d5bef134ea20a2670d383492977b4d152e24464a.tar.bz2
Convert windowmenu to lua
also, i've restored the autoreloading capability of menus.
Diffstat (limited to 'src/Screen.cc')
-rw-r--r--src/Screen.cc37
1 files changed, 20 insertions, 17 deletions
diff --git a/src/Screen.cc b/src/Screen.cc
index 4492092..b953c92 100644
--- a/src/Screen.cc
+++ b/src/Screen.cc
@@ -259,7 +259,7 @@ BScreen::ScreenResource::ScreenResource(FbTk::ResourceManager_base &rm,
259 click_raises(rm, true, scrname+".clickRaises"), 259 click_raises(rm, true, scrname+".clickRaises"),
260 default_deco(rm, "NORMAL", scrname+".defaultDeco"), 260 default_deco(rm, "NORMAL", scrname+".defaultDeco"),
261 tab_placement(rm, FbWinFrame::TOPLEFT, scrname+".tab.placement"), 261 tab_placement(rm, FbWinFrame::TOPLEFT, scrname+".tab.placement"),
262 windowmenufile(rm, Fluxbox::instance()->getDefaultDataFilename("windowmenu"), scrname+".windowMenu"), 262 windowmenufile(rm, Fluxbox::instance()->getDefaultDataFilename("windowmenu2"), scrname+".windowMenu"),
263 typing_delay(rm, 0, scrname+".noFocusWhileTypingDelay"), 263 typing_delay(rm, 0, scrname+".noFocusWhileTypingDelay"),
264 workspaces(rm, 4, scrname+".workspaces"), 264 workspaces(rm, 4, scrname+".workspaces"),
265 edge_snap_threshold(rm, 10, scrname+".edgeSnapThreshold"), 265 edge_snap_threshold(rm, 10, scrname+".edgeSnapThreshold"),
@@ -1384,26 +1384,25 @@ void BScreen::reassociateWindow(FluxboxWindow *w, unsigned int wkspc_id,
1384} 1384}
1385 1385
1386void BScreen::initMenus() { 1386void BScreen::initMenus() {
1387 lua::state &l = Fluxbox::instance()->lua();
1388 m_workspacemenu.reset(MenuCreator::createMenuType("workspacemenu", screenNumber())); 1387 m_workspacemenu.reset(MenuCreator::createMenuType("workspacemenu", screenNumber()));
1389 l.loadfile(FbTk::StringUtil::expandFilename(Fluxbox::instance()->getMenuFilename()).c_str()); 1388
1390 l.call(0, 0); 1389 m_rootmenu->reloadHelper()->setMainFile(Fluxbox::instance()->getMenuFilename());
1391 l.getglobal("menu");
1392 m_rootmenu = MenuCreator::createMenu(l, 0);
1393// m_rootmenu->reloadHelper()->setMainFile(Fluxbox::instance()->getMenuFilename());
1394 m_windowmenu->reloadHelper()->setMainFile(windowMenuFilename()); 1390 m_windowmenu->reloadHelper()->setMainFile(windowMenuFilename());
1395} 1391}
1396 1392
1397 1393
1398void BScreen::rereadMenu() { 1394void BScreen::rereadMenu() {
1399 1395
1400 m_rootmenu->removeAll();
1401 m_rootmenu->setLabel(FbTk::BiDiString(""));
1402
1403 Fluxbox * const fb = Fluxbox::instance(); 1396 Fluxbox * const fb = Fluxbox::instance();
1404 if (!fb->getMenuFilename().empty()) 1397 lua::state &l = fb->lua();
1405 MenuCreator::createFromFile(fb->getMenuFilename(), *m_rootmenu, 1398 l.checkstack(1);
1406 m_rootmenu->reloadHelper()); 1399 lua::stack_sentry s(l);
1400
1401 // XXX try/catch
1402 m_rootmenu->removeAll();
1403 l.loadfile(FbTk::StringUtil::expandFilename(fb->getMenuFilename()).c_str());
1404 l.call(0, 1);
1405 MenuCreator::createMenu(*m_rootmenu, l, screenNumber(), m_rootmenu->reloadHelper());
1407 1406
1408 if (m_rootmenu->numberOfItems() == 0) { 1407 if (m_rootmenu->numberOfItems() == 0) {
1409 _FB_USES_NLS; 1408 _FB_USES_NLS;
@@ -1430,12 +1429,16 @@ const std::string BScreen::windowMenuFilename() const {
1430} 1429}
1431 1430
1432void BScreen::rereadWindowMenu() { 1431void BScreen::rereadWindowMenu() {
1432 lua::state &l = Fluxbox::instance()->lua();
1433 l.checkstack(1);
1434 lua::stack_sentry s(l);
1433 1435
1434 m_windowmenu->removeAll();
1435 if (!windowMenuFilename().empty())
1436 MenuCreator::createFromFile(windowMenuFilename(), *m_windowmenu,
1437 m_windowmenu->reloadHelper());
1438 1436
1437 // XXX try/catch
1438 m_windowmenu->removeAll();
1439 l.loadfile(FbTk::StringUtil::expandFilename(windowMenuFilename()).c_str());
1440 l.call(0, 1);
1441 MenuCreator::createMenu(*m_windowmenu, l, screenNumber(), m_windowmenu->reloadHelper());
1439} 1442}
1440 1443
1441void BScreen::addConfigMenu(const FbTk::FbString &label, FbTk::Menu &menu) { 1444void BScreen::addConfigMenu(const FbTk::FbString &label, FbTk::Menu &menu) {