diff options
author | Pavel Labath <pavelo@centrum.sk> | 2011-07-02 15:21:24 (GMT) |
---|---|---|
committer | Paul Tagliamonte <paultag@fluxbox.org> | 2012-04-07 02:11:29 (GMT) |
commit | 34649e86c5cbe9c9f231c049a0844afdda5a7db9 (patch) | |
tree | 6e9696e36565e993185c9d265ca6542b77788fd9 /src/Toolbar.hh | |
parent | 0b0ee8dc504016ffad85ec1dd35875d273cf0179 (diff) | |
download | fluxbox_paul-34649e86c5cbe9c9f231c049a0844afdda5a7db9.zip fluxbox_paul-34649e86c5cbe9c9f231c049a0844afdda5a7db9.tar.bz2 |
Store menus if smart pointers (RefCount)
This was originally intended to be a bugfix for an memory error reported by valgrind (accessing
freed memory). While debugging it, I found the menu ownership semantics confusing
(setInternalMenu() et al.), so I decided to get rid of it and store it in smart pointers
everywhere.
Looking back, I'm not sure if this was worth all the trouble, but the good news is that the
valgrind error disappeared. :)
Diffstat (limited to 'src/Toolbar.hh')
-rw-r--r-- | src/Toolbar.hh | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/Toolbar.hh b/src/Toolbar.hh index eca379b..b0aeb60 100644 --- a/src/Toolbar.hh +++ b/src/Toolbar.hh | |||
@@ -104,13 +104,13 @@ public: | |||
104 | 104 | ||
105 | int layerNumber() const { return const_cast<FbTk::LayerItem &>(m_layeritem).getLayerNum(); } | 105 | int layerNumber() const { return const_cast<FbTk::LayerItem &>(m_layeritem).getLayerNum(); } |
106 | 106 | ||
107 | const FbTk::Menu &menu() const { return m_toolbarmenu; } | 107 | FbTk::RefCount<const FbTk::Menu> menu() const { return m_toolbarmenu; } |
108 | FbTk::Menu &menu() { return m_toolbarmenu; } | 108 | FbTk::RefCount<FbTk::Menu> menu() { return m_toolbarmenu; } |
109 | FbTk::Menu &placementMenu() { return m_placementmenu; } | 109 | FbTk::RefCount<FbTk::Menu> placementMenu() { return m_placementmenu; } |
110 | const FbTk::Menu &placementMenu() const { return m_placementmenu; } | 110 | FbTk::RefCount<const FbTk::Menu> placementMenu() const { return m_placementmenu; } |
111 | 111 | ||
112 | FbTk::Menu &layerMenu() { return m_layermenu; } | 112 | FbTk::RefCount<FbTk::Menu> layerMenu() { return m_layermenu; } |
113 | const FbTk::Menu &layerMenu() const { return m_layermenu; } | 113 | FbTk::RefCount<const FbTk::Menu> layerMenu() const { return m_layermenu; } |
114 | 114 | ||
115 | /// are we hidden? | 115 | /// are we hidden? |
116 | bool isHidden() const { return m_hidden; } | 116 | bool isHidden() const { return m_hidden; } |
@@ -165,10 +165,10 @@ private: | |||
165 | FbTk::Timer m_hide_timer; ///< timer to for auto hide toolbar | 165 | FbTk::Timer m_hide_timer; ///< timer to for auto hide toolbar |
166 | 166 | ||
167 | FbTk::LayerItem m_layeritem; ///< layer item, must be declared before layermenu | 167 | FbTk::LayerItem m_layeritem; ///< layer item, must be declared before layermenu |
168 | LayerMenu m_layermenu; | 168 | FbTk::RefCount<LayerMenu> m_layermenu; |
169 | FbMenu m_placementmenu, m_toolbarmenu; | 169 | FbTk::RefCount<FbMenu> m_placementmenu, m_toolbarmenu; |
170 | #ifdef XINERAMA | 170 | #ifdef XINERAMA |
171 | XineramaHeadMenu<Toolbar> *m_xineramaheadmenu; | 171 | FbTk::RefCount<XineramaHeadMenu<Toolbar> > m_xineramaheadmenu; |
172 | #endif // XINERAMA | 172 | #endif // XINERAMA |
173 | 173 | ||
174 | 174 | ||