diff options
author | Tomas Janousek <tomi@nomi.cz> | 2007-08-05 22:36:12 (GMT) |
---|---|---|
committer | Tomas Janousek <tomi@nomi.cz> | 2008-01-27 14:01:14 (GMT) |
commit | 4faf1bf5c3fe07260b0a4c084db56b0bed12734a (patch) | |
tree | 60bf00665704a18258275d4917428006a841bcf1 /src/Xinerama.hh | |
parent | b405d36151d3a6d3074eb6bafb541a1d6228d85e (diff) | |
download | fluxbox_pavel-4faf1bf5c3fe07260b0a4c084db56b0bed12734a.zip fluxbox_pavel-4faf1bf5c3fe07260b0a4c084db56b0bed12734a.tar.bz2 |
"On head" menu -- reloading and refreshing bugfix.
We should reload the contents of this menu on Xinerama layout change.
I switched it from FbMenu to ToggleMenu, because the selected head wasn't
being updated properly.
Signed-off-by: Tomas Janousek <tomi@nomi.cz>
Diffstat (limited to 'src/Xinerama.hh')
-rw-r--r-- | src/Xinerama.hh | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/Xinerama.hh b/src/Xinerama.hh index f58b4f0..eab2e37 100644 --- a/src/Xinerama.hh +++ b/src/Xinerama.hh | |||
@@ -25,6 +25,7 @@ | |||
25 | 25 | ||
26 | #include "FbMenu.hh" | 26 | #include "FbMenu.hh" |
27 | #include "fluxbox.hh" | 27 | #include "fluxbox.hh" |
28 | #include "Screen.hh" | ||
28 | 29 | ||
29 | #include "FbTk/RefCount.hh" | 30 | #include "FbTk/RefCount.hh" |
30 | #include "FbTk/SimpleCommand.hh" | 31 | #include "FbTk/SimpleCommand.hh" |
@@ -59,14 +60,16 @@ private: | |||
59 | 60 | ||
60 | /// Create a xinerama menu | 61 | /// Create a xinerama menu |
61 | template <typename ItemType> | 62 | template <typename ItemType> |
62 | class XineramaHeadMenu : public FbMenu { | 63 | class XineramaHeadMenu : public ToggleMenu { |
63 | public: | 64 | public: |
64 | XineramaHeadMenu(FbTk::ThemeProxy<FbTk::MenuTheme> &tm, BScreen &screen, | 65 | XineramaHeadMenu(FbTk::ThemeProxy<FbTk::MenuTheme> &tm, BScreen &screen, |
65 | FbTk::ImageControl &imgctrl, FbTk::XLayer &layer, | 66 | FbTk::ImageControl &imgctrl, FbTk::XLayer &layer, |
66 | ItemType &item, const FbTk::FbString & title = ""); | 67 | ItemType &item, const FbTk::FbString & title = ""); |
68 | void reloadHeads(); | ||
67 | 69 | ||
68 | private: | 70 | private: |
69 | ItemType &m_object; | 71 | ItemType &m_object; |
72 | BScreen &m_screen; | ||
70 | }; | 73 | }; |
71 | 74 | ||
72 | 75 | ||
@@ -75,15 +78,22 @@ XineramaHeadMenu<ItemType>::XineramaHeadMenu( | |||
75 | FbTk::ThemeProxy<FbTk::MenuTheme> &tm, BScreen &screen, | 78 | FbTk::ThemeProxy<FbTk::MenuTheme> &tm, BScreen &screen, |
76 | FbTk::ImageControl &imgctrl, FbTk::XLayer &layer, ItemType &item, | 79 | FbTk::ImageControl &imgctrl, FbTk::XLayer &layer, ItemType &item, |
77 | const FbTk::FbString & title): | 80 | const FbTk::FbString & title): |
78 | FbMenu(tm, imgctrl, layer), | 81 | ToggleMenu(tm, imgctrl, layer), |
79 | m_object(item) | 82 | m_object(item), m_screen(screen) |
80 | { | 83 | { |
81 | setLabel(title); | 84 | setLabel(title); |
85 | reloadHeads(); | ||
86 | } | ||
87 | |||
88 | template <typename ItemType> | ||
89 | void XineramaHeadMenu<ItemType>::reloadHeads() | ||
90 | { | ||
91 | removeAll(); | ||
82 | FbTk::RefCount<FbTk::Command<void> > saverc_cmd(new FbTk::SimpleCommand<Fluxbox>( | 92 | FbTk::RefCount<FbTk::Command<void> > saverc_cmd(new FbTk::SimpleCommand<Fluxbox>( |
83 | *Fluxbox::instance(), | 93 | *Fluxbox::instance(), |
84 | &Fluxbox::save_rc)); | 94 | &Fluxbox::save_rc)); |
85 | char tname[128]; | 95 | char tname[128]; |
86 | for (int i=1; i <= screen.numHeads(); ++i) { | 96 | for (int i=1; i <= m_screen.numHeads(); ++i) { |
87 | // TODO: nls | 97 | // TODO: nls |
88 | /* | 98 | /* |
89 | sprintf(tname, I18n::instance()-> | 99 | sprintf(tname, I18n::instance()-> |