diff options
Diffstat (limited to 'src/Toolbar.cc')
-rw-r--r-- | src/Toolbar.cc | 29 |
1 files changed, 22 insertions, 7 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(); |