diff options
-rw-r--r-- | src/Toolbar.cc | 29 | ||||
-rw-r--r-- | src/Toolbar.hh | 12 |
2 files changed, 30 insertions, 11 deletions
diff --git a/src/Toolbar.cc b/src/Toolbar.cc index cbe5148..8d748d4 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Toolbar.cc,v 1.111 2003/08/16 12:10:19 fluxgen Exp $ | 25 | // $Id: Toolbar.cc,v 1.112 2003/08/19 21:28:57 fluxgen Exp $ |
26 | 26 | ||
27 | #include "Toolbar.hh" | 27 | #include "Toolbar.hh" |
28 | 28 | ||
@@ -38,6 +38,7 @@ | |||
38 | #include "I18n.hh" | 38 | #include "I18n.hh" |
39 | #include "fluxbox.hh" | 39 | #include "fluxbox.hh" |
40 | #include "Screen.hh" | 40 | #include "Screen.hh" |
41 | #include "ImageControl.hh" | ||
41 | 42 | ||
42 | #include "EventManager.hh" | 43 | #include "EventManager.hh" |
43 | #include "SimpleCommand.hh" | 44 | #include "SimpleCommand.hh" |
@@ -201,6 +202,7 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, FbTk::Menu &menu, size_t wi | |||
201 | m_editing(false), | 202 | m_editing(false), |
202 | m_hidden(false), | 203 | m_hidden(false), |
203 | frame(*this, scrn.screenNumber()), | 204 | frame(*this, scrn.screenNumber()), |
205 | m_window_pm(0), | ||
204 | m_screen(scrn), | 206 | m_screen(scrn), |
205 | m_toolbarmenu(menu), | 207 | m_toolbarmenu(menu), |
206 | m_placementmenu(*scrn.menuTheme(), | 208 | m_placementmenu(*scrn.menuTheme(), |
@@ -212,6 +214,9 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, FbTk::Menu &menu, size_t wi | |||
212 | this, | 214 | this, |
213 | true), | 215 | true), |
214 | m_theme(scrn.screenNumber()), | 216 | m_theme(scrn.screenNumber()), |
217 | m_clock_theme(scrn.screenNumber(), "toolbar.clock", "Toolbar.Clock"), | ||
218 | m_workspace_theme(scrn.screenNumber(), "toolbar.workspace", "Toolbar.Workspace"), | ||
219 | m_iconbar_theme(scrn.screenNumber(), "toolbar.iconbar", "Toolbar.Iconbar"), | ||
215 | m_layeritem(frame.window, layer), | 220 | m_layeritem(frame.window, layer), |
216 | m_strut(0), | 221 | m_strut(0), |
217 | // lock rcmanager here | 222 | // lock rcmanager here |
@@ -229,9 +234,6 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, FbTk::Menu &menu, size_t wi | |||
229 | scrn.name() + ".toolbar.placement", scrn.altName() + ".Toolbar.Placement"), | 234 | scrn.name() + ".toolbar.placement", scrn.altName() + ".Toolbar.Placement"), |
230 | m_rc_height(scrn.resourceManager(), 0, scrn.name() + ".toolbar.height", scrn.altName() + ".Toolbar.Height"), | 235 | m_rc_height(scrn.resourceManager(), 0, scrn.name() + ".toolbar.height", scrn.altName() + ".Toolbar.Height"), |
231 | m_shape(new Shape(frame.window, 0)), | 236 | m_shape(new Shape(frame.window, 0)), |
232 | m_clock_theme(scrn.screenNumber(), "toolbar.clock", "Toolbar.Clock"), | ||
233 | m_workspace_theme(scrn.screenNumber(), "toolbar.workspace", "Toolbar.Workspace"), | ||
234 | m_iconbar_theme(scrn.screenNumber(), "toolbar.iconbar", "Toolbar.Iconbar"), | ||
235 | m_resize_lock(false) { | 237 | m_resize_lock(false) { |
236 | 238 | ||
237 | // we need to get notified when the theme is reloaded | 239 | // we need to get notified when the theme is reloaded |
@@ -289,6 +291,9 @@ Toolbar::~Toolbar() { | |||
289 | m_item_list.pop_back(); | 291 | m_item_list.pop_back(); |
290 | } | 292 | } |
291 | 293 | ||
294 | if (m_window_pm) | ||
295 | screen().imageControl().removeImage(m_window_pm); | ||
296 | |||
292 | clearStrut(); | 297 | clearStrut(); |
293 | } | 298 | } |
294 | 299 | ||
@@ -384,9 +389,19 @@ void Toolbar::reconfigure() { | |||
384 | frame.window.moveResize(frame.x, frame.y, | 389 | frame.window.moveResize(frame.x, frame.y, |
385 | frame.width, frame.height); | 390 | frame.width, frame.height); |
386 | } | 391 | } |
387 | 392 | // render frame window | |
388 | 393 | Pixmap tmp = m_window_pm; | |
389 | 394 | if (theme().toolbar().type() == (FbTk::Texture::FLAT | FbTk::Texture::SOLID)) { | |
395 | m_window_pm = 0; | ||
396 | frame.window.setBackgroundColor(theme().toolbar().color()); | ||
397 | } else { | ||
398 | m_window_pm = screen().imageControl().renderImage(frame.window.width(), frame.window.height(), | ||
399 | theme().toolbar()); | ||
400 | frame.window.setBackgroundPixmap(m_window_pm); | ||
401 | } | ||
402 | if (tmp) | ||
403 | screen().imageControl().removeImage(tmp); | ||
404 | |||
390 | frame.window.setBorderColor(theme().border().color()); | 405 | frame.window.setBorderColor(theme().border().color()); |
391 | frame.window.setBorderWidth(theme().border().width()); | 406 | frame.window.setBorderWidth(theme().border().width()); |
392 | frame.window.clear(); | 407 | frame.window.clear(); |
diff --git a/src/Toolbar.hh b/src/Toolbar.hh index 4f75d89..3e9878c 100644 --- a/src/Toolbar.hh +++ b/src/Toolbar.hh | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Toolbar.hh,v 1.43 2003/08/15 13:25:03 fluxgen Exp $ | 25 | // $Id: Toolbar.hh,v 1.44 2003/08/19 21:28:57 fluxgen Exp $ |
26 | 26 | ||
27 | #ifndef TOOLBAR_HH | 27 | #ifndef TOOLBAR_HH |
28 | #define TOOLBAR_HH | 28 | #define TOOLBAR_HH |
@@ -158,6 +158,8 @@ private: | |||
158 | int x, y, x_hidden, y_hidden, grab_x, grab_y; | 158 | int x, y, x_hidden, y_hidden, grab_x, grab_y; |
159 | unsigned int width, height, bevel_w; | 159 | unsigned int width, height, bevel_w; |
160 | } frame; | 160 | } frame; |
161 | // background pixmap | ||
162 | Pixmap m_window_pm; | ||
161 | 163 | ||
162 | BScreen &m_screen; ///< screen connection | 164 | BScreen &m_screen; ///< screen connection |
163 | 165 | ||
@@ -166,14 +168,17 @@ private: | |||
166 | FbTk::Menu m_placementmenu; | 168 | FbTk::Menu m_placementmenu; |
167 | LayerMenu<Toolbar> m_layermenu; | 169 | LayerMenu<Toolbar> m_layermenu; |
168 | 170 | ||
169 | 171 | // themes | |
170 | ToolbarTheme m_theme; | 172 | ToolbarTheme m_theme; |
173 | ToolTheme m_clock_theme, m_workspace_theme; | ||
174 | IconbarTheme m_iconbar_theme; | ||
171 | 175 | ||
172 | FbTk::XLayerItem m_layeritem; | 176 | FbTk::XLayerItem m_layeritem; |
173 | typedef std::list<ToolbarItem *> ItemList; | 177 | typedef std::list<ToolbarItem *> ItemList; |
174 | ItemList m_item_list; | 178 | ItemList m_item_list; |
175 | 179 | ||
176 | Strut *m_strut; ///< created and destroyed by BScreen | 180 | Strut *m_strut; ///< created and destroyed by BScreen |
181 | |||
177 | // resources | 182 | // resources |
178 | FbTk::Resource<bool> m_rc_auto_hide, m_rc_maximize_over; | 183 | FbTk::Resource<bool> m_rc_auto_hide, m_rc_maximize_over; |
179 | FbTk::Resource<int> m_rc_width_percent; | 184 | FbTk::Resource<int> m_rc_width_percent; |
@@ -183,8 +188,7 @@ private: | |||
183 | FbTk::Resource<int> m_rc_height; | 188 | FbTk::Resource<int> m_rc_height; |
184 | std::auto_ptr<Shape> m_shape; | 189 | std::auto_ptr<Shape> m_shape; |
185 | 190 | ||
186 | ToolTheme m_clock_theme, m_workspace_theme; | 191 | |
187 | IconbarTheme m_iconbar_theme; | ||
188 | bool m_resize_lock; ///< to lock rearrangeItems or not | 192 | bool m_resize_lock; ///< to lock rearrangeItems or not |
189 | }; | 193 | }; |
190 | 194 | ||