From 57b41ae42f1ca701dc768e71c03e6dae5fd8df04 Mon Sep 17 00:00:00 2001 From: fluxgen Date: Mon, 11 Aug 2003 20:22:38 +0000 Subject: cleaning --- src/Toolbar.cc | 471 ++++++++------------------------------------------------- src/Toolbar.hh | 40 +---- 2 files changed, 71 insertions(+), 440 deletions(-) diff --git a/src/Toolbar.cc b/src/Toolbar.cc index 10d38e2..7e0cf2b 100644 --- a/src/Toolbar.cc +++ b/src/Toolbar.cc @@ -22,12 +22,12 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Toolbar.cc,v 1.105 2003/08/11 15:56:10 fluxgen Exp $ +// $Id: Toolbar.cc,v 1.106 2003/08/11 20:19:16 fluxgen Exp $ #include "Toolbar.hh" #include "Container.hh" -#include "ClockTool.hh" + #include "TextButton.hh" #include "IconButton.hh" #include "IconButtonTheme.hh" @@ -35,6 +35,7 @@ // tools #include "IconbarTool.hh" #include "WorkspaceNameTool.hh" +#include "ClockTool.hh" #include "I18n.hh" #include "fluxbox.hh" @@ -189,21 +190,12 @@ Toolbar::Frame::Frame(FbTk::EventHandler &evh, int screen_num): // event mask ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask, - true), // override redirect - window_label(window, // parent - 0, 0, // pos - 1, 1, // size - // event mask - ButtonPressMask | ButtonReleaseMask | - ExposureMask | - EnterWindowMask | LeaveWindowMask) { + true) // override redirect +{ FbTk::EventManager &evm = *FbTk::EventManager::instance(); // add windows to eventmanager evm.add(evh, window); - evm.add(evh, window_label); - - } @@ -211,15 +203,12 @@ Toolbar::Frame::~Frame() { FbTk::EventManager &evm = *FbTk::EventManager::instance(); // remove windows from eventmanager evm.remove(window); - evm.remove(window_label); } Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, FbTk::Menu &menu, size_t width): m_editing(false), m_hidden(false), frame(*this, scrn.screenNumber()), - m_icon_focused_pm(0), - m_icon_unfocused_pm(0), m_screen(scrn), m_toolbarmenu(menu), m_placementmenu(*scrn.menuTheme(), @@ -247,7 +236,9 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, FbTk::Menu &menu, size_t wi m_rc_placement(scrn.resourceManager(), Toolbar::BOTTOMCENTER, scrn.name() + ".toolbar.placement", scrn.altName() + ".Toolbar.Placement"), m_shape(new Shape(frame.window, 0)), - m_tool_theme(scrn.screenNumber(), "toolbar.clock", "Toolbar.Clock") { + m_clock_theme(scrn.screenNumber(), "toolbar.clock", "Toolbar.Clock"), + m_workspace_theme(scrn.screenNumber(), "toolbar.workspace", "Toolbar.Workspace"), + m_iconbar_theme(scrn.screenNumber(), "toolbar.iconbar", "Toolbar.Iconbar") { // we need to get notified when the theme is reloaded m_theme.reconfigSig().attach(this); @@ -266,21 +257,14 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, FbTk::Menu &menu, size_t wi // geometry settings frame.width = width; - frame.height = frame.label_h = 10; - frame.window_label_w = width/3; + frame.height = 10; frame.bevel_w = 1; + frame.grab_x = frame.grab_y = 0; - // setup toolbar items - m_item_list.push_back(new ClockTool(frame.window, m_tool_theme, screen())); - m_item_list.push_back(new WorkspaceNameTool(frame.window, m_tool_theme, screen())); - static IconbarTheme iconbar_theme(frame.window.screenNumber(), - "toolbar.iconbar", "Toolbar.Iconbar"); - - m_item_list.push_back(new IconbarTool(frame.window, iconbar_theme, screen())); - - - // show all items - frame.window.showSubwindows(); + // add toolbar items + m_item_list.push_back(new WorkspaceNameTool(frame.window, m_workspace_theme, screen())); + m_item_list.push_back(new IconbarTool(frame.window, m_iconbar_theme, screen())); + m_item_list.push_back(new ClockTool(frame.window, m_clock_theme, screen())); m_theme.font().setAntialias(screen().antialias()); @@ -290,33 +274,16 @@ Toolbar::Toolbar(BScreen &scrn, FbTk::XLayer &layer, FbTk::Menu &menu, size_t wi m_hide_timer.setCommand(toggle_hidden); m_hide_timer.fireOnce(true); - frame.grab_x = frame.grab_y = 0; - - frame.base = frame.label = 0; + // get everything together + reconfigure(); - // m_iconbar.reset(new Container(frame.window_label)); - // m_iconbar->setBackgroundColor(FbTk::Color("white", 0)); - // m_iconbar->show(); - - // finaly: setup Commands for the buttons in the frame - typedef FbTk::SimpleCommand ScreenCmd; - FbTk::RefCount nextworkspace(new ScreenCmd(screen(), - &BScreen::nextWorkspace)); - FbTk::RefCount prevworkspace(new ScreenCmd(screen(), - &BScreen::prevWorkspace)); - FbTk::RefCount nextwindow(new ScreenCmd(screen(), - &BScreen::nextFocus)); - FbTk::RefCount prevwindow(new ScreenCmd(screen(), - &BScreen::prevFocus)); - - reconfigure(); // get everything together + // show all windows frame.window.showSubwindows(); frame.window.show(); scrn.resourceManager().unlock(); } - Toolbar::~Toolbar() { while (!m_item_list.empty()) { delete m_item_list.back(); @@ -324,11 +291,6 @@ Toolbar::~Toolbar() { } clearStrut(); - FbTk::ImageControl &image_ctrl = screen().imageControl(); - if (frame.base) image_ctrl.removeImage(frame.base); - if (frame.label) image_ctrl.removeImage(frame.label); - if (m_icon_focused_pm) image_ctrl.removeImage(m_icon_focused_pm); - if (m_icon_unfocused_pm) image_ctrl.removeImage(m_icon_unfocused_pm); } void Toolbar::clearStrut() { @@ -386,145 +348,6 @@ bool Toolbar::isVertical() const { placement() == LEFTBOTTOM); } -void Toolbar::addIcon(FluxboxWindow *w) { - if (w == 0) - return; - - if (m_iconbar.get() != 0) { - // create and setup button for iconbar - FbTk::RefCount on_click(new FbTk::SimpleCommand(*w, &FluxboxWindow::raiseAndFocus)); - IconButton *button = new IconButton(*m_iconbar.get(), theme().iconFont(), *w); - button->setOnClick(on_click); - button->window().setBorderWidth(1); - button->show(); - m_icon2winmap[w] = button; - // add button to iconbar - m_iconbar->insertItem(button); - // make sure we listen to focus signal - w->focusSig().attach(this); - // render graphics - updateIconbarGraphics(); - } -} - -void Toolbar::delIcon(FluxboxWindow *w) { - if (w == 0) - return; - - if (m_iconbar.get() != 0) { - IconButton *button = m_icon2winmap[w]; - if (button == 0) - return; - - int index = m_iconbar->find(button); - if (index >= 0) - m_iconbar->removeItem(index); - - m_icon2winmap.erase(w); - delete button; - - updateIconbarGraphics(); - } -} - -void Toolbar::delAllIcons(bool ignore_stuck) { - if (m_iconbar.get() == 0) - return; - - m_iconbar->removeAll(); - - Icon2WinMap::iterator it = m_icon2winmap.begin(); - Icon2WinMap::iterator it_end = m_icon2winmap.end(); - for (; it != it_end; ++it) { - delete (*it).second; - } - - m_icon2winmap.clear(); -} - -bool Toolbar::containsIcon(const FluxboxWindow &win) const { - return m_icon2winmap.find(const_cast(&win)) != m_icon2winmap.end(); -} - -void Toolbar::enableUpdates() { - -} - -void Toolbar::disableUpdates() { - -} - -void Toolbar::updateIconbarGraphics() { - if (m_iconbar.get() == 0) - return; - - // render icon pixmaps to correct size - Pixmap tmp = m_icon_focused_pm; - const FbTk::Texture *texture = &(theme().iconbarFocused()); - if (texture->type() == (FbTk::Texture::FLAT | FbTk::Texture::SOLID)) { - m_icon_focused_pm = 0; - m_icon_focused_color = theme().iconbarFocused().color(); - } else { - m_icon_focused_pm = screen().imageControl().renderImage(m_iconbar->maxWidthPerClient(), - m_iconbar->maxHeightPerClient(), *texture); - } - // remove from cache - if (tmp) - screen().imageControl().removeImage(tmp); - - // render icon pixmaps to correct size - tmp = m_icon_unfocused_pm; - texture = &(theme().iconbarUnfocused()); - if (texture->type() == (FbTk::Texture::FLAT | FbTk::Texture::SOLID)) { - m_icon_unfocused_pm = 0; - m_icon_unfocused_color = theme().iconbarUnfocused().color(); - } else { - m_icon_unfocused_pm = screen().imageControl().renderImage(m_iconbar->maxWidthPerClient(), - m_iconbar->maxHeightPerClient(), *texture); - } - // remove from cache - if (tmp) - screen().imageControl().removeImage(tmp); - - Icon2WinMap::iterator it = m_icon2winmap.begin(); - Icon2WinMap::iterator it_end = m_icon2winmap.end(); - for (; it != it_end; ++it) { - IconButton &button = *(*it).second; - if (button.win().isFocused()) { - button.setGC(theme().iconTextFocusedGC()); - if (m_icon_focused_pm != 0) - button.setBackgroundPixmap(m_icon_focused_pm); - else - button.setBackgroundColor(m_icon_focused_color); - - } else { // unfocused - button.setGC(theme().iconTextUnfocusedGC()); - if (m_icon_unfocused_pm != 0) - button.setBackgroundPixmap(m_icon_unfocused_pm); - else - button.setBackgroundColor(m_icon_unfocused_color); - } - - button.setFont(theme().iconFont()); - } - -} - -void Toolbar::enableIconBar() { - if (m_iconbar.get() != 0) - return; // already on - - // m_iconbar.reset(new Container(frame.window_label)); - // m_iconbar->show(); -} - -void Toolbar::disableIconBar() { - if (m_iconbar.get() == 0) - return; // already off - - m_iconbar.reset(0); // destroy iconbar - -} void Toolbar::raise() { m_layeritem.raise(); @@ -541,11 +364,6 @@ void Toolbar::reconfigure() { if (doAutoHide()) m_hide_timer.start(); - bool vertical = isVertical(); - - // if (m_iconbar.get()) - // m_iconbar->setVertical(vertical); - frame.bevel_w = theme().bevelWidth(); // destroy shape if the theme wasn't specified with one, // or create one @@ -558,30 +376,6 @@ void Toolbar::reconfigure() { // recallibrate size setPlacement(placement()); - unsigned int i; - unsigned int w = 0; - - - // Right, let's break this one down.... - // full width, minus workspace label and the 4 arrow buttons. - // each of the (6) aforementioned items are separated by a bevel width, - // plus outside (+1), plus the window label (+1). - - i = 0; - - // of course if your toolbar is set too small, this could go negative. - // which is bad mmmkay. Since we are unsigned, we check that *first*. - if (vertical) - w = frame.height; - else - w = frame.width; - - if (i > w) - frame.window_label_w = 0; - else - frame.window_label_w = w - i; - - if (isHidden()) frame.window.moveResize(frame.x_hidden, frame.y_hidden, frame.width, frame.height); @@ -591,83 +385,14 @@ void Toolbar::reconfigure() { } - unsigned int next_x = 0; - unsigned int next_y = frame.window.height(); - unsigned int text_x=0, text_y=0; - if (vertical) - text_x = frame.bevel_w; - else - text_y = frame.bevel_w; - - next_x = 0; - next_y = 0; - - - - size_t label_w = frame.window_label_w; - size_t label_h = frame.height; - - - frame.window_label.moveResize(next_x, next_y, - label_w, label_h); - - - FbTk::ImageControl &image_ctrl = screen().imageControl(); - - Pixmap tmp = frame.base; - const FbTk::Texture *texture = &(m_theme.toolbar()); - if (texture->type() == (FbTk::Texture::FLAT | FbTk::Texture::SOLID)) { - frame.base = None; - frame.window.setBackgroundColor(texture->color()); - } else { - frame.base = image_ctrl.renderImage(frame.window.width(), - frame.window.height(), *texture); - frame.window.setBackgroundPixmap(frame.base); - } - if (tmp) - image_ctrl.removeImage(tmp); - - tmp = frame.label; - texture = &(m_theme.window()); - if (texture->type() == (FbTk::Texture::FLAT | FbTk::Texture::SOLID)) { - frame.label = None; - frame.window_label.setBackgroundColor(texture->color()); - } else { - frame.label = - image_ctrl.renderImage(frame.window_label.width(), - frame.window_label.height(), *texture); - frame.window_label.setBackgroundPixmap(frame.label); - } - if (tmp) image_ctrl.removeImage(tmp); - - frame.window.setBorderColor(theme().borderColor()); frame.window.setBorderWidth(theme().borderWidth()); - frame.window.clear(); - - frame.window_label.clear(); - - - frame.window_label.setAlpha(theme().alpha()); if (theme().shape() && m_shape.get()) m_shape->update(); - redrawWindowLabel(); - - - // setup icon bar - if (m_iconbar.get()) { - frame.window_label.move(frame.window_label.x(), frame.window_label.y() - 1); - frame.window_label.setBorderWidth(0); - m_iconbar->resize(frame.window_label.width(), frame.window_label.height()); - updateIconbarGraphics(); - } - - redrawWorkspaceLabel(); - checkClock(true); // calculate size for fixed items ItemList::iterator item_it = m_item_list.begin(); @@ -681,110 +406,61 @@ void Toolbar::reconfigure() { } } // calculate what's going to be left over to the relative sized items - int realtive_width = 0; + int relative_width = 0; if (fixed_items == 0) // no fixed items, then the rest is the entire width - realtive_width = width(); - else - realtive_width = (width() - fixed_width)/fixed_items; + relative_width = width(); + else { + const int relative_items = m_item_list.size() - fixed_items; + if (relative_items == 0) + relative_width = 0; + else // size left after fixed items / number of relative items + relative_width = (width() - fixed_width)/relative_items; + } // now move and resize the items - next_x = 0; + int next_x = 0; for (item_it = m_item_list.begin(); item_it != item_it_end; ++item_it) { if ((*item_it)->type() == ToolbarItem::RELATIVE) { - (*item_it)->moveResize(next_x, 0, realtive_width, height()); - cerr<<"realtive size: "<<(*item_it)->width()<<", "<<(*item_it)->height()<moveResize(next_x, 0, relative_width, height()); + } else { // fixed size (*item_it)->moveResize(next_x, 0, (*item_it)->width(), height()); - + } next_x += (*item_it)->width(); } m_toolbarmenu.reconfigure(); // we're done with all resizing and stuff now we can request a new - // area to be reserv on screen + // area to be reserved on screen updateStrut(); } -void Toolbar::checkClock(bool redraw, bool date) { +void Toolbar::buttonPressEvent(XButtonEvent &be) { + if (be.button != 3) + return; -} + if (! m_toolbarmenu.isVisible()) { + int x, y; + x = be.x_root - (m_toolbarmenu.width() / 2); + y = be.y_root - (m_toolbarmenu.height() / 2); -void Toolbar::redrawWindowLabel(bool redraw) { - WinClient *winclient = Fluxbox::instance()->getFocusedWindow(); - if (winclient) { - if (redraw) - frame.window_label.clear(); + if (x < 0) + x = 0; + else if (x + m_toolbarmenu.width() > screen().width()) + x = screen().width() - m_toolbarmenu.width(); - const std::string &title = winclient->getTitle(); + if (y < 0) + y = 0; + else if (y + m_toolbarmenu.height() > screen().height()) + y = screen().height() - m_toolbarmenu.height(); - // don't draw focused window if it's not on the same screen - if (&winclient->screen() != &screen() || title.size() == 0) - return; - - unsigned int newlen = title.size(); - int dx = FbTk::doAlignment(frame.window_label_w, frame.bevel_w*2, - m_theme.justify(), - m_theme.font(), - title.c_str(), - title.size(), newlen); - int dy = 1 + m_theme.font().ascent(); - - if (m_theme.font().isRotated()) { - int tmp = dy; - dy = frame.window_label.height() - dx; - dx = tmp + frame.bevel_w; - } else - dy += frame.bevel_w; - - m_theme.font().drawText(frame.window_label.window(), - screen().screenNumber(), - m_theme.windowTextGC(), - title.c_str(), newlen, - dx, dy); + m_toolbarmenu.move(x, y); + m_toolbarmenu.show(); } else - frame.window_label.clear(); - - frame.window_label.updateTransparent(); -} - - -void Toolbar::redrawWorkspaceLabel(bool redraw) { - -} - -void Toolbar::edit() { - -} - - -void Toolbar::buttonPressEvent(XButtonEvent &be) { - if (be.button == 3) { - if (! m_toolbarmenu.isVisible()) { - int x, y; - - x = be.x_root - (m_toolbarmenu.width() / 2); - y = be.y_root - (m_toolbarmenu.height() / 2); - - if (x < 0) - x = 0; - else if (x + m_toolbarmenu.width() > screen().width()) - x = screen().width() - m_toolbarmenu.width(); - - if (y < 0) - y = 0; - else if (y + m_toolbarmenu.height() > screen().height()) - y = screen().height() - m_toolbarmenu.height(); - - m_toolbarmenu.move(x, y); - m_toolbarmenu.show(); - } else - m_toolbarmenu.hide(); - - } + m_toolbarmenu.hide(); } @@ -836,28 +512,7 @@ void Toolbar::keyPressEvent(XKeyEvent &ke) { void Toolbar::update(FbTk::Subject *subj) { - if (typeid(*subj) == typeid(FluxboxWindow::WinSubject) && m_iconbar.get()) { // focus signal - FluxboxWindow &win = dynamic_cast(subj)->win(); - if (m_icon2winmap[&win] == 0) - return; - FbTk::Button *was_selected = m_iconbar->selected(); - int pos = m_iconbar->find(m_icon2winmap[&win]); - m_iconbar->setSelected(pos); - // setup texture for the unseleced and selected button - if (m_iconbar->selected()) { - if (m_icon_focused_pm == 0) - m_iconbar->selected()->setBackgroundColor(m_icon_focused_color); - else - m_iconbar->selected()->setBackgroundPixmap(m_icon_focused_pm); - } - if (was_selected) { - if (m_icon_unfocused_pm == 0) - was_selected->setBackgroundColor(m_icon_unfocused_color); - else - was_selected->setBackgroundPixmap(m_icon_unfocused_pm); - } - return; // nothing more to do - } + // either screen reconfigured or theme was reloaded reconfigure(); @@ -901,11 +556,9 @@ void Toolbar::setPlacement(Toolbar::Placement where) { if (!m_theme.font().isRotated()) m_theme.font().rotate(90); // rotate to vertical text - frame.label_h = frame.width; } else { // horizontal toolbar if (m_theme.font().isRotated()) m_theme.font().rotate(0); // rotate to horizontal text - frame.label_h = frame.height; } // So we get at least one pixel visible in hidden mode @@ -1046,12 +699,14 @@ void Toolbar::setupMenus() { using namespace FbTk; FbTk::Menu &menu = tbar.menu(); - + //!! TODO: this should be inserted by the workspace tool + /* + RefCount start_edit(new SimpleCommand(tbar, &Toolbar::edit)); menu.insert(i18n->getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarEditWkspcName, - "Edit current workspace name"), - start_edit); - + "Edit current workspace name"), + start_edit); + */ menu.setLabel(i18n->getMessage(FBNLS::ToolbarSet, FBNLS::ToolbarToolbarTitle, "Toolbar")); @@ -1084,13 +739,13 @@ void Toolbar::setupMenus() { if (tbar.screen().hasXinerama()) { // TODO: nls (main label plus menu heading menu.insert("On Head...", new XineramaHeadMenu( - *tbar.screen().menuTheme(), - tbar.screen(), - tbar.screen().imageControl(), - *tbar.screen().layerManager().getLayer(Fluxbox::instance()->getMenuLayer()), - tbar, - "Toolbar on Head" - )); + *tbar.screen().menuTheme(), + tbar.screen(), + tbar.screen().imageControl(), + *tbar.screen().layerManager().getLayer(Fluxbox::instance()->getMenuLayer()), + tbar, + "Toolbar on Head" + )); } // setup items in placement menu diff --git a/src/Toolbar.hh b/src/Toolbar.hh index f18afad..0073ab0 100644 --- a/src/Toolbar.hh +++ b/src/Toolbar.hh @@ -22,7 +22,7 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Toolbar.hh,v 1.40 2003/08/11 15:54:24 fluxgen Exp $ +// $Id: Toolbar.hh,v 1.41 2003/08/11 20:22:38 fluxgen Exp $ #ifndef TOOLBAR_HH #define TOOLBAR_HH @@ -30,6 +30,7 @@ #include "Timer.hh" #include "ToolbarTheme.hh" #include "ToolTheme.hh" +#include "IconbarTheme.hh" #include "EventHandler.hh" #include "FbWindow.hh" @@ -74,22 +75,10 @@ public: virtual ~Toolbar(); - /// add icon to iconbar - void addIcon(FluxboxWindow *w); - /// remove icon from iconbar - void delIcon(FluxboxWindow *w); - bool containsIcon(const FluxboxWindow &win) const; - /// remove all icons - void delAllIcons(bool ignore_stuck = false); - void enableIconBar(); - void disableIconBar(); void raise(); void lower(); void toggleHidden(); - void enableUpdates(); - void disableUpdates(); - void moveToLayer(int layernum); @@ -107,13 +96,10 @@ public: void keyPressEvent(XKeyEvent &ke); //@} - void redrawWindowLabel(bool redraw= false); - void redrawWorkspaceLabel(bool redraw= false); /// enter edit mode on workspace label void edit(); void reconfigure(); void setPlacement(Placement where); - void checkClock(bool redraw = false, bool date = false); void update(FbTk::Subject *subj); @@ -137,14 +123,13 @@ public: inline const FbTk::FbWindow &window() const { return frame.window; } inline BScreen &screen() { return m_screen; } inline const BScreen &screen() const { return m_screen; } - inline unsigned int width() const { return frame.width; } - inline unsigned int height() const { return frame.height; } + inline unsigned int width() const { return frame.window.width(); } + inline unsigned int height() const { return frame.window.height(); } inline unsigned int exposedHeight() const { return doAutoHide() ? frame.bevel_w : frame.height; } inline int x() const { return isHidden() ? frame.x_hidden : frame.x; } inline int y() const { return isHidden() ? frame.y_hidden : frame.y; } inline Placement placement() const { return *m_rc_placement; } /// @return pointer to iconbar if it got one, else 0 - inline const IconBar *iconBar() const { return m_iconbar.get(); } inline const ToolbarTheme &theme() const { return m_theme; } inline ToolbarTheme &theme() { return m_theme; } bool isVertical() const; @@ -165,16 +150,12 @@ private: Frame(FbTk::EventHandler &evh, int screen_num); ~Frame(); - Pixmap base, label; - FbTk::FbWindow window, window_label; + FbTk::FbWindow window; int x, y, x_hidden, y_hidden, grab_x, grab_y; - unsigned int width, height, window_label_w, bevel_w, label_h; + unsigned int width, height, bevel_w; } frame; - Pixmap m_icon_focused_pm, m_icon_unfocused_pm; - FbTk::Color m_icon_focused_color, m_icon_unfocused_color; - BScreen &m_screen; ///< screen connection FbTk::Timer m_hide_timer; ///< timer to for auto hide toolbar @@ -182,13 +163,7 @@ private: FbTk::Menu m_placementmenu; LayerMenu m_layermenu; - // icon stuff - std::auto_ptr m_iconbar; - typedef std::map Icon2WinMap; - Icon2WinMap m_icon2winmap; - std::string m_new_workspace_name; ///< temp variable in edit workspace name mode - ToolbarTheme m_theme; FbTk::XLayerItem m_layeritem; @@ -204,7 +179,8 @@ private: FbTk::Resource m_rc_placement; std::auto_ptr m_shape; - ToolTheme m_tool_theme; + ToolTheme m_clock_theme, m_workspace_theme; + IconbarTheme m_iconbar_theme; }; -- cgit v0.11.2