load style before loading theme objects, remove duplicate theme load

This commit is contained in:
Mark Tiefenbruck 2007-12-16 00:50:59 -08:00
parent 8516f1e2a2
commit 4a7a143713
12 changed files with 19 additions and 14 deletions

View file

@ -39,6 +39,7 @@ ButtonTheme::ButtonTheme(int screen_num,
m_name(name),
m_fallbackname(extra_fallback), m_altfallbackname(extra_fallback_alt) {
FbTk::ThemeManager::instance().loadTheme(*this);
}
bool ButtonTheme::fallback(FbTk::ThemeItem_base &item) {

View file

@ -98,6 +98,7 @@ MenuTheme::MenuTheme(int screen_num):
d_text_gc.setForeground(*d_text);
hilite_gc.setForeground(hilite->color());
ThemeManager::instance().loadTheme(*this);
}
MenuTheme::~MenuTheme() {

View file

@ -97,12 +97,14 @@ bool ThemeManager::registerTheme(Theme &tm) {
// valid screen num?
if (m_max_screens < tm.screenNum() || tm.screenNum() < 0)
return false;
// TODO: use find and return false if it's already there
// instead of unique
m_themes[tm.screenNum()].push_back(&tm);
m_themes[tm.screenNum()].unique();
return true;
ThemeList::const_iterator it = m_themes[tm.screenNum()].begin(),
it_end = m_themes[tm.screenNum()].end();
if (std::find(it, it_end, &tm) == it_end) {
m_themes[tm.screenNum()].push_back(&tm);
return true;
}
return false;
}
bool ThemeManager::unregisterTheme(Theme &tm) {

View file

@ -74,6 +74,7 @@ FbWinFrameTheme::FbWinFrameTheme(int screen_num):
m_cursor_right_side = XCreateFontCursor(disp, XC_right_side);
m_cursor_bottom_side = XCreateFontCursor(disp, XC_bottom_side);
FbTk::ThemeManager::instance().loadTheme(*this);
reconfigTheme();
}

View file

@ -55,4 +55,5 @@ void FbTk::ThemeItem<Shape::ShapePlace>::setFromString(const char *str) {
MenuTheme::MenuTheme(int screen_num):FbTk::MenuTheme(screen_num),
m_shapeplace(*this, "menu.roundCorners", "Menu.RoundCorners") {
*m_shapeplace = Shape::NONE;
FbTk::ThemeManager::instance().loadTheme(*this);
}

View file

@ -159,6 +159,7 @@ RootTheme::RootTheme(FbTk::ImageControl &image_control):
m_opgc.setFunction(GXxor);
m_opgc.setSubwindowMode(IncludeInferiors);
m_opgc.setLineAttributes(1, LineSolid, CapNotLast, JoinMiter);
FbTk::ThemeManager::instance().loadTheme(*this);
}
RootTheme::~RootTheme() {

View file

@ -525,12 +525,6 @@ BScreen::BScreen(FbTk::ResourceManager &rm,
// and after we've load the resources
// else we get some bad handle/grip height/width
// FbTk::ThemeManager::instance().loadTheme(*m_windowtheme.get());
//!! TODO: For some strange reason we must load everything,
// else the focus label doesn't get updated
// This must be fixed in the future.
FbTk::ThemeManager::instance().load(fluxbox->getStyleFilename(),
fluxbox->getStyleOverlayFilename(),
m_root_theme->screenNum());
m_root_theme->setLineAttributes(*resource.gc_line_width,
*resource.gc_line_style,
*resource.gc_cap_style,

View file

@ -34,6 +34,7 @@ SlitTheme::SlitTheme(int screen_num):FbTk::Theme(screen_num),
m_border_color.setDefaultValue();
// default texture type
m_texture->setType(FbTk::Texture::SOLID);
FbTk::ThemeManager::instance().loadTheme(*this);
}

View file

@ -31,6 +31,7 @@ ToolTheme::ToolTheme(int screen_num, const std::string &name, const std::string
m_border(*this, name, altname),
m_alpha(255) {
FbTk::ThemeManager::instance().loadTheme(*this);
}
ToolTheme::~ToolTheme() {

View file

@ -42,6 +42,7 @@ ToolbarTheme::ToolbarTheme(int screen_num):
*m_shape = false;
*m_height = 0;
*m_button_size = -1;
FbTk::ThemeManager::instance().loadTheme(*this);
}
ToolbarTheme::~ToolbarTheme() {

View file

@ -58,6 +58,7 @@ WinButtonTheme::WinButtonTheme(int screen_num, FbWinFrameTheme &frame_theme):
m_stuck_unfocus_pm(*this, "window.stuck.unfocus.pixmap", "Window.Stuck.Unfocus.Pixmap"),
m_frame_theme(frame_theme) {
FbTk::ThemeManager::instance().loadTheme(*this);
}
WinButtonTheme::~WinButtonTheme() {

View file

@ -318,6 +318,9 @@ Fluxbox::Fluxbox(int argc, char **argv, const char *dpy_name, const char *rcfile
#endif // HAVE_GETPID
// setup theme manager to have our style file ready to be scanned
FbTk::ThemeManager::instance().load(getStyleFilename(), getStyleOverlayFilename());
// Create keybindings handler and load keys file
// Note: this needs to be done before creating screens
m_key.reset(new Keys);
@ -410,9 +413,6 @@ Fluxbox::Fluxbox(int argc, char **argv, const char *dpy_name, const char *rcfile
XAllowEvents(disp, ReplayPointer, CurrentTime);
// setup theme manager to have our style file ready to be scanned
FbTk::ThemeManager::instance().load(getStyleFilename(), getStyleOverlayFilename());
//XSynchronize(disp, False);
sync(false);