diff options
Diffstat (limited to 'src/FbTk')
-rw-r--r-- | src/FbTk/Menu.cc | 24 | ||||
-rw-r--r-- | src/FbTk/Menu.hh | 4 | ||||
-rw-r--r-- | src/FbTk/MenuItem.cc | 1 | ||||
-rw-r--r-- | src/FbTk/MenuItem.hh | 10 | ||||
-rw-r--r-- | src/FbTk/MultiButtonMenuItem.cc | 3 | ||||
-rw-r--r-- | src/FbTk/MultiButtonMenuItem.hh | 2 | ||||
-rw-r--r-- | src/FbTk/RadioMenuItem.hh | 2 |
7 files changed, 15 insertions, 31 deletions
diff --git a/src/FbTk/Menu.cc b/src/FbTk/Menu.cc index dfba1d0..645a712 100644 --- a/src/FbTk/Menu.cc +++ b/src/FbTk/Menu.cc | |||
@@ -126,8 +126,7 @@ Menu::Menu(FbTk::ThemeProxy<MenuTheme> &tm, ImageControl &imgctrl): | |||
126 | 126 | ||
127 | m_title_vis = true; | 127 | m_title_vis = true; |
128 | 128 | ||
129 | m_internal_menu = | 129 | m_moving = |
130 | m_moving = | ||
131 | m_closing = | 130 | m_closing = |
132 | m_torn = | 131 | m_torn = |
133 | m_visible = false; | 132 | m_visible = false; |
@@ -227,7 +226,7 @@ int Menu::insert(const FbString &label, int pos) { | |||
227 | return insert(new MenuItem(label, *this), pos); | 226 | return insert(new MenuItem(label, *this), pos); |
228 | } | 227 | } |
229 | 228 | ||
230 | int Menu::insert(const FbString &label, Menu *submenu, int pos) { | 229 | int Menu::insert(const FbString &label, const RefCount<Menu> &submenu, int pos) { |
231 | return insert(new MenuItem(label, submenu, this), pos); | 230 | return insert(new MenuItem(label, submenu, this), pos); |
232 | } | 231 | } |
233 | 232 | ||
@@ -274,19 +273,6 @@ int Menu::remove(unsigned int index) { | |||
274 | if (index != menuitems.size()) | 273 | if (index != menuitems.size()) |
275 | fixMenuItemIndices(); | 274 | fixMenuItemIndices(); |
276 | 275 | ||
277 | if (item->submenu() != 0) { | ||
278 | Menu *tmp = item->submenu(); | ||
279 | // if menu is internal we should just hide it instead | ||
280 | // if destroying it | ||
281 | if (! tmp->m_internal_menu) { | ||
282 | delete tmp; | ||
283 | } | ||
284 | // We can't internal_hide here, as the child may be deleted! | ||
285 | // } else | ||
286 | // tmp->internal_hide(); | ||
287 | } | ||
288 | |||
289 | |||
290 | delete item; | 276 | delete item; |
291 | } | 277 | } |
292 | 278 | ||
@@ -374,8 +360,8 @@ void Menu::enterSubmenu() { | |||
374 | if (!validIndex(m_active_index)) | 360 | if (!validIndex(m_active_index)) |
375 | return; | 361 | return; |
376 | 362 | ||
377 | Menu *submenu = menuitems[m_active_index]->submenu(); | 363 | RefCount<Menu> submenu = menuitems[m_active_index]->submenu(); |
378 | if (submenu == 0) | 364 | if (! submenu) |
379 | return; | 365 | return; |
380 | 366 | ||
381 | if (submenu->menuitems.empty()) | 367 | if (submenu->menuitems.empty()) |
@@ -759,7 +745,7 @@ void Menu::drawSubmenu(unsigned int index) { | |||
759 | clearItem(index); | 745 | clearItem(index); |
760 | 746 | ||
761 | if (! item->submenu()->isVisible() && item->submenu()->numberOfItems() > 0) { | 747 | if (! item->submenu()->isVisible() && item->submenu()->numberOfItems() > 0) { |
762 | shown = item->submenu(); | 748 | shown = item->submenu().get(); |
763 | item->showSubmenu(); | 749 | item->showSubmenu(); |
764 | item->submenu()->raise(); | 750 | item->submenu()->raise(); |
765 | } | 751 | } |
diff --git a/src/FbTk/Menu.hh b/src/FbTk/Menu.hh index 4096295..5807592 100644 --- a/src/FbTk/Menu.hh +++ b/src/FbTk/Menu.hh | |||
@@ -65,14 +65,13 @@ public: | |||
65 | /// add empty menu item | 65 | /// add empty menu item |
66 | int insert(const FbString &label, int pos=-1); | 66 | int insert(const FbString &label, int pos=-1); |
67 | /// add submenu | 67 | /// add submenu |
68 | int insert(const FbString &label, Menu *submenu, int pos= -1); | 68 | int insert(const FbString &label, const RefCount<Menu> &submenu, int pos= -1); |
69 | /// add menu item | 69 | /// add menu item |
70 | int insert(MenuItem *item, int pos=-1); | 70 | int insert(MenuItem *item, int pos=-1); |
71 | /// remove an item | 71 | /// remove an item |
72 | int remove(unsigned int item); | 72 | int remove(unsigned int item); |
73 | /// remove all items | 73 | /// remove all items |
74 | void removeAll(); | 74 | void removeAll(); |
75 | void setInternalMenu(bool val = true) { m_internal_menu = val; } | ||
76 | void setAlignment(Alignment a) { m_alignment = a; } | 75 | void setAlignment(Alignment a) { m_alignment = a; } |
77 | 76 | ||
78 | /// raise this window | 77 | /// raise this window |
@@ -213,7 +212,6 @@ private: | |||
213 | bool m_closing; ///< if we're right clicking on the menu title | 212 | bool m_closing; ///< if we're right clicking on the menu title |
214 | bool m_visible; ///< menu visibility | 213 | bool m_visible; ///< menu visibility |
215 | bool m_torn; ///< torn from parent | 214 | bool m_torn; ///< torn from parent |
216 | bool m_internal_menu; ///< whether we should destroy this menu or if it's managed somewhere else | ||
217 | bool m_title_vis; ///< title visibility | 215 | bool m_title_vis; ///< title visibility |
218 | 216 | ||
219 | int m_which_sub; | 217 | int m_which_sub; |
diff --git a/src/FbTk/MenuItem.cc b/src/FbTk/MenuItem.cc index c128c57..0715ecc 100644 --- a/src/FbTk/MenuItem.cc +++ b/src/FbTk/MenuItem.cc | |||
@@ -27,7 +27,6 @@ | |||
27 | #include "Image.hh" | 27 | #include "Image.hh" |
28 | #include "App.hh" | 28 | #include "App.hh" |
29 | #include "StringUtil.hh" | 29 | #include "StringUtil.hh" |
30 | #include "Menu.hh" | ||
31 | #include <X11/keysym.h> | 30 | #include <X11/keysym.h> |
32 | 31 | ||
33 | namespace FbTk { | 32 | namespace FbTk { |
diff --git a/src/FbTk/MenuItem.hh b/src/FbTk/MenuItem.hh index cc24228..227488f 100644 --- a/src/FbTk/MenuItem.hh +++ b/src/FbTk/MenuItem.hh | |||
@@ -22,6 +22,7 @@ | |||
22 | #ifndef FBTK_MENUITEM_HH | 22 | #ifndef FBTK_MENUITEM_HH |
23 | #define FBTK_MENUITEM_HH | 23 | #define FBTK_MENUITEM_HH |
24 | 24 | ||
25 | #include "Menu.hh" | ||
25 | #include "RefCount.hh" | 26 | #include "RefCount.hh" |
26 | #include "Command.hh" | 27 | #include "Command.hh" |
27 | #include "PixmapWithMask.hh" | 28 | #include "PixmapWithMask.hh" |
@@ -32,7 +33,6 @@ | |||
32 | 33 | ||
33 | namespace FbTk { | 34 | namespace FbTk { |
34 | 35 | ||
35 | class Menu; | ||
36 | class MenuTheme; | 36 | class MenuTheme; |
37 | class FbDrawable; | 37 | class FbDrawable; |
38 | template <class T> class ThemeProxy; | 38 | template <class T> class ThemeProxy; |
@@ -80,7 +80,7 @@ public: | |||
80 | m_toggle_item(false) | 80 | m_toggle_item(false) |
81 | { } | 81 | { } |
82 | 82 | ||
83 | MenuItem(const BiDiString &label, Menu *submenu, Menu *host_menu = 0) | 83 | MenuItem(const BiDiString &label, const RefCount<Menu> &submenu, Menu *host_menu = 0) |
84 | : m_label(label), | 84 | : m_label(label), |
85 | m_menu(host_menu), | 85 | m_menu(host_menu), |
86 | m_submenu(submenu), | 86 | m_submenu(submenu), |
@@ -98,7 +98,7 @@ public: | |||
98 | virtual void setToggleItem(bool val) { m_toggle_item = val; } | 98 | virtual void setToggleItem(bool val) { m_toggle_item = val; } |
99 | void setCloseOnClick(bool val) { m_close_on_click = val; } | 99 | void setCloseOnClick(bool val) { m_close_on_click = val; } |
100 | void setIcon(const std::string &filename, int screen_num); | 100 | void setIcon(const std::string &filename, int screen_num); |
101 | virtual Menu *submenu() { return m_submenu; } | 101 | virtual const RefCount<Menu>& submenu() { return m_submenu; } |
102 | /** | 102 | /** |
103 | @name accessors | 103 | @name accessors |
104 | */ | 104 | */ |
@@ -107,7 +107,7 @@ public: | |||
107 | virtual const PixmapWithMask *icon() const { | 107 | virtual const PixmapWithMask *icon() const { |
108 | return m_icon.get() ? m_icon->pixmap.get() : 0; | 108 | return m_icon.get() ? m_icon->pixmap.get() : 0; |
109 | } | 109 | } |
110 | virtual const Menu *submenu() const { return m_submenu; } | 110 | virtual RefCount<const Menu> submenu() const { return m_submenu; } |
111 | virtual bool isEnabled() const { return m_enabled; } | 111 | virtual bool isEnabled() const { return m_enabled; } |
112 | virtual bool isSelected() const { return m_selected; } | 112 | virtual bool isSelected() const { return m_selected; } |
113 | virtual bool isToggleItem() const { return m_toggle_item; } | 113 | virtual bool isToggleItem() const { return m_toggle_item; } |
@@ -150,7 +150,7 @@ public: | |||
150 | private: | 150 | private: |
151 | BiDiString m_label; ///< label of this item | 151 | BiDiString m_label; ///< label of this item |
152 | Menu *m_menu; ///< the menu we live in | 152 | Menu *m_menu; ///< the menu we live in |
153 | Menu *m_submenu; ///< a submenu, 0 if we don't have one | 153 | RefCount<Menu> m_submenu; ///< a submenu, 0 if we don't have one |
154 | RefCount<Command<void> > m_command; ///< command to be executed | 154 | RefCount<Command<void> > m_command; ///< command to be executed |
155 | bool m_enabled, m_selected; | 155 | bool m_enabled, m_selected; |
156 | bool m_close_on_click, m_toggle_item; | 156 | bool m_close_on_click, m_toggle_item; |
diff --git a/src/FbTk/MultiButtonMenuItem.cc b/src/FbTk/MultiButtonMenuItem.cc index f5b9990..359e96c 100644 --- a/src/FbTk/MultiButtonMenuItem.cc +++ b/src/FbTk/MultiButtonMenuItem.cc | |||
@@ -33,7 +33,8 @@ MultiButtonMenuItem::MultiButtonMenuItem(int buttons, const FbTk::BiDiString &la | |||
33 | init(buttons); | 33 | init(buttons); |
34 | } | 34 | } |
35 | 35 | ||
36 | MultiButtonMenuItem::MultiButtonMenuItem(int buttons, const FbTk::BiDiString &label, Menu *submenu): | 36 | MultiButtonMenuItem::MultiButtonMenuItem(int buttons, const FbTk::BiDiString &label, |
37 | const RefCount<Menu> &submenu): | ||
37 | MenuItem(label, submenu), | 38 | MenuItem(label, submenu), |
38 | m_button_exe(0), | 39 | m_button_exe(0), |
39 | m_buttons(buttons) { | 40 | m_buttons(buttons) { |
diff --git a/src/FbTk/MultiButtonMenuItem.hh b/src/FbTk/MultiButtonMenuItem.hh index 0a9c5e6..427302c 100644 --- a/src/FbTk/MultiButtonMenuItem.hh +++ b/src/FbTk/MultiButtonMenuItem.hh | |||
@@ -31,7 +31,7 @@ namespace FbTk { | |||
31 | class MultiButtonMenuItem: public FbTk::MenuItem { | 31 | class MultiButtonMenuItem: public FbTk::MenuItem { |
32 | public: | 32 | public: |
33 | MultiButtonMenuItem(int buttons, const FbTk::BiDiString& label); | 33 | MultiButtonMenuItem(int buttons, const FbTk::BiDiString& label); |
34 | MultiButtonMenuItem(int buttons, const FbTk::BiDiString& label, Menu *submenu); | 34 | MultiButtonMenuItem(int buttons, const FbTk::BiDiString& label, const RefCount<Menu> &submenu); |
35 | virtual ~MultiButtonMenuItem(); | 35 | virtual ~MultiButtonMenuItem(); |
36 | /// sets command to specified button | 36 | /// sets command to specified button |
37 | void setCommand(int button, FbTk::RefCount<FbTk::Command<void> > &cmd); | 37 | void setCommand(int button, FbTk::RefCount<FbTk::Command<void> > &cmd); |
diff --git a/src/FbTk/RadioMenuItem.hh b/src/FbTk/RadioMenuItem.hh index ddd2274..cc3f00a 100644 --- a/src/FbTk/RadioMenuItem.hh +++ b/src/FbTk/RadioMenuItem.hh | |||
@@ -47,7 +47,7 @@ public: | |||
47 | setToggleItem(true); | 47 | setToggleItem(true); |
48 | } | 48 | } |
49 | 49 | ||
50 | RadioMenuItem(const FbString &label, Menu *submenu, Menu *host_menu = 0): | 50 | RadioMenuItem(const FbString &label, const RefCount<Menu> &submenu, Menu *host_menu = 0): |
51 | MenuItem(label, submenu, host_menu) { | 51 | MenuItem(label, submenu, host_menu) { |
52 | setToggleItem(true); | 52 | setToggleItem(true); |
53 | } | 53 | } |