implement smarter reloading for custom menus
This commit is contained in:
parent
dcdc783324
commit
68cf309220
3 changed files with 17 additions and 6 deletions
|
@ -1,5 +1,8 @@
|
||||||
(Format: Year/Month/Day)
|
(Format: Year/Month/Day)
|
||||||
Changes for 1.1
|
Changes for 1.1
|
||||||
|
*08/05/13:
|
||||||
|
* Only reload custom menus when necessary (Mark)
|
||||||
|
FbCommands.cc/hh
|
||||||
*08/05/12:
|
*08/05/12:
|
||||||
* Only reload the keys file if the contents have changed (Mark)
|
* Only reload the keys file if the contents have changed (Mark)
|
||||||
Keys.cc/hh fluxbox.cc/hh
|
Keys.cc/hh fluxbox.cc/hh
|
||||||
|
|
|
@ -343,16 +343,23 @@ void ShowCustomMenuCmd::execute() {
|
||||||
if (screen == 0)
|
if (screen == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (m_menu.get()) {
|
if (!m_menu.get() || screen->screenNumber() != m_menu->screenNumber()) {
|
||||||
m_menu->removeAll();
|
|
||||||
m_menu->setLabel("");
|
|
||||||
} else
|
|
||||||
m_menu.reset(screen->createMenu(""));
|
m_menu.reset(screen->createMenu(""));
|
||||||
|
m_menu->setReloadHelper(new FbTk::AutoReloadHelper());
|
||||||
|
m_menu->reloadHelper()->setReloadCmd(FbTk::RefCount<FbTk::Command<void> >(new FbTk::SimpleCommand<ShowCustomMenuCmd>(*this, &ShowCustomMenuCmd::reload)));
|
||||||
|
m_menu->reloadHelper()->setMainFile(custom_menu_file);
|
||||||
|
} else
|
||||||
|
m_menu->reloadHelper()->checkReload();
|
||||||
|
|
||||||
MenuCreator::createFromFile(custom_menu_file, *m_menu.get());
|
|
||||||
::showMenu(*screen, *m_menu.get());
|
::showMenu(*screen, *m_menu.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ShowCustomMenuCmd::reload() {
|
||||||
|
m_menu->removeAll();
|
||||||
|
m_menu->setLabel("");
|
||||||
|
MenuCreator::createFromFile(custom_menu_file, *m_menu.get(), m_menu->reloadHelper());
|
||||||
|
}
|
||||||
|
|
||||||
REGISTER_COMMAND(rootmenu, FbCommands::ShowRootMenuCmd, void);
|
REGISTER_COMMAND(rootmenu, FbCommands::ShowRootMenuCmd, void);
|
||||||
|
|
||||||
void ShowRootMenuCmd::execute() {
|
void ShowRootMenuCmd::execute() {
|
||||||
|
|
|
@ -132,9 +132,10 @@ class ShowCustomMenuCmd: public FbTk::Command<void> {
|
||||||
public:
|
public:
|
||||||
explicit ShowCustomMenuCmd(const std::string &arguments);
|
explicit ShowCustomMenuCmd(const std::string &arguments);
|
||||||
void execute();
|
void execute();
|
||||||
|
void reload();
|
||||||
private:
|
private:
|
||||||
std::string custom_menu_file;
|
std::string custom_menu_file;
|
||||||
std::auto_ptr<FbTk::Menu> m_menu;
|
std::auto_ptr<FbMenu> m_menu;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ShowRootMenuCmd: public FbTk::Command<void> {
|
class ShowRootMenuCmd: public FbTk::Command<void> {
|
||||||
|
|
Loading…
Reference in a new issue