several fixes for background option in styles
This commit is contained in:
parent
16743aad06
commit
6ed9f38b7a
14 changed files with 199 additions and 103 deletions
|
@ -1,5 +1,14 @@
|
||||||
(Format: Year/Month/Day)
|
(Format: Year/Month/Day)
|
||||||
Changes for 1.0rc3:
|
Changes for 1.0rc3:
|
||||||
|
*07/01/14:
|
||||||
|
* Several changes for background style option: (Mark)
|
||||||
|
- now support `background: mod' to coincide with fbsetroot -mod --
|
||||||
|
In addition to `background.color' and `background.colorTo', this option
|
||||||
|
must also set `background.modX' and `background.modY' to integers
|
||||||
|
- added `background: none' for styles that do not include a background
|
||||||
|
- fixed bug with style backgrounds not getting set when changing styles
|
||||||
|
- updated default styles to be valid wrt background options
|
||||||
|
RootTheme.cc/hh Screen.cc FbTk/Theme.hh
|
||||||
*07/01/13:
|
*07/01/13:
|
||||||
* Only change focus order when user specifically focuses a window (Mark)
|
* Only change focus order when user specifically focuses a window (Mark)
|
||||||
Screen.cc Window.cc FocusControl.cc/hh
|
Screen.cc Window.cc FocusControl.cc/hh
|
||||||
|
|
|
@ -104,7 +104,11 @@ bevelWidth: 2
|
||||||
borderWidth: 1
|
borderWidth: 1
|
||||||
handleWidth: 5
|
handleWidth: 5
|
||||||
|
|
||||||
!rootCommand: fbsetroot -mod 4 4 -bg rgb:10/18/20 -fg rgb:30/38/40
|
background: mod
|
||||||
|
background.modX: 4
|
||||||
|
background.modY: 4
|
||||||
|
background.color: rgb:10/18/20
|
||||||
|
background.colorTo: rgb:30/38/40
|
||||||
|
|
||||||
*Font: -*-lucidatypewriter-medium-r-*-*-*-100-*-*-*-*-*-*
|
*Font: -*-lucidatypewriter-medium-r-*-*-*-100-*-*-*-*-*-*
|
||||||
!*Font: vera-7
|
!*Font: vera-7
|
||||||
|
|
|
@ -172,3 +172,6 @@ borderWidth: 1
|
||||||
bevelWidth: 0
|
bevelWidth: 0
|
||||||
handleWidth: 3
|
handleWidth: 3
|
||||||
frameWidth: 0
|
frameWidth: 0
|
||||||
|
|
||||||
|
! need this here, even though there is no background in the style
|
||||||
|
background: none
|
||||||
|
|
|
@ -192,3 +192,6 @@ toolbar.iconbar.empty.colorTo: #cfcfcf
|
||||||
|
|
||||||
toolbar.iconbar.borderWidth: 1
|
toolbar.iconbar.borderWidth: 1
|
||||||
toolbar.iconbar.borderColor: #dbdbdb
|
toolbar.iconbar.borderColor: #dbdbdb
|
||||||
|
|
||||||
|
! need this here, even though there is no background in the style
|
||||||
|
background: none
|
||||||
|
|
|
@ -131,4 +131,8 @@ bevelWidth: 2
|
||||||
borderWidth: 2
|
borderWidth: 2
|
||||||
handleWidth: 3
|
handleWidth: 3
|
||||||
|
|
||||||
!rootCommand: fbsetroot -mod 5 5 -fg rgb:62/70/85 -bg rgb:52/60/75
|
background: mod
|
||||||
|
background.modX: 5
|
||||||
|
background.modY: 5
|
||||||
|
background.color: rgb:52/60/75
|
||||||
|
background.colorTo: rgb:62/70/85
|
||||||
|
|
|
@ -107,7 +107,11 @@ borderWidth: 1
|
||||||
bevelWidth: 2
|
bevelWidth: 2
|
||||||
handleWidth: 4
|
handleWidth: 4
|
||||||
|
|
||||||
rootCommand: fbsetroot -mod 4 4 -fg rgb:54/6/6 -bg grey20
|
background: mod
|
||||||
|
background.modX: 4
|
||||||
|
background.modY: 4
|
||||||
|
background.color: grey20
|
||||||
|
background.colorTo: rgb:54/6/6
|
||||||
|
|
||||||
! for the bbtools
|
! for the bbtools
|
||||||
menuFont: lucidasans-10
|
menuFont: lucidasans-10
|
||||||
|
|
|
@ -99,4 +99,8 @@ handleWidth: 5
|
||||||
*font: -b&h-lucida-medium-r-normal-*-*-100-*-*-p-*-iso8859-*
|
*font: -b&h-lucida-medium-r-normal-*-*-100-*-*-p-*-iso8859-*
|
||||||
*textColor: black
|
*textColor: black
|
||||||
|
|
||||||
rootCommand: fbsetroot -mod 16 8 -bg rgb:0/8/8 -fg rgb:0/9/9
|
background: mod
|
||||||
|
background.modX: 16
|
||||||
|
background.modY: 8
|
||||||
|
background.color: rgb:0/8/8
|
||||||
|
background.colorTo: rgb:0/9/9
|
||||||
|
|
|
@ -107,7 +107,11 @@ borderWidth: 1
|
||||||
bevelWidth: 2
|
bevelWidth: 2
|
||||||
handleWidth: 4
|
handleWidth: 4
|
||||||
|
|
||||||
rootCommand: fbsetroot -mod 4 4 -fg rgb:6/6/5c -bg grey20
|
background: mod
|
||||||
|
background.modX: 4
|
||||||
|
background.modY: 4
|
||||||
|
background.color: grey20
|
||||||
|
background.colorTo: rgb:6/6/5c
|
||||||
|
|
||||||
! for the bbtools
|
! for the bbtools
|
||||||
menuFont: lucidasans-10
|
menuFont: lucidasans-10
|
||||||
|
|
|
@ -104,6 +104,10 @@ bevelWidth: 1
|
||||||
borderWidth: 1
|
borderWidth: 1
|
||||||
handleWidth: 3
|
handleWidth: 3
|
||||||
|
|
||||||
rootCommand: fbsetroot -mod 2 2 -fg rgb:48/50/68 -bg rgb:50/58/70
|
background: mod
|
||||||
|
background.modX: 2
|
||||||
|
background.modY: 2
|
||||||
|
background.color: rgb:50/58/70
|
||||||
|
background.colorTo: rgb:48/50/68
|
||||||
|
|
||||||
*Font: lucidasans-10
|
*Font: lucidasans-10
|
||||||
|
|
|
@ -348,15 +348,23 @@ Everything you need to make your menu look pretty.
|
||||||
|
|
||||||
BACKGROUND
|
BACKGROUND
|
||||||
------------
|
------------
|
||||||
Rarely are you going to want to use this option. There is a command that is
|
Every style must specify the background option. If you don't want your style to
|
||||||
similar that is used in the init file. It is bad style to use this in your
|
change the user's background, then use `background: none'. The options
|
||||||
style, as it forces the user to use your background. So note that it is good
|
`centered', `aspect', `tiled', and `fullscreen' require the `background.pixmap'
|
||||||
practice to leave this blank or out of the style altogether.
|
resource to contain a valid file name. The `random' option requires
|
||||||
|
`background.pixmap' to contain a valid directory name. For these options,
|
||||||
|
fluxbox(1) will call fbsetbg(1) to set the background. The options `gradient',
|
||||||
|
`solid', and `mod' all require `background.color' to be set. `gradient' and
|
||||||
|
`mod' both require `background.colorTo'. `mod' requires `background.modX' and
|
||||||
|
`background.modY' to be set as well. These options will be passed to
|
||||||
|
fbsetroot(1) to set the background.
|
||||||
|
|
||||||
background: centered|aspect|tiled|fullscreen|random|solid|gradient <texture>
|
background: centered|aspect|tiled|fullscreen|random|solid|gradient <texture>|mod|none
|
||||||
background.pixmap: <file (or directory for random)>
|
background.pixmap: <file or directory>
|
||||||
background.color: <color>
|
background.color: <color>
|
||||||
background.colorTo: <color>
|
background.colorTo: <color>
|
||||||
|
background.modX: <integer>
|
||||||
|
background.modY: <integer>
|
||||||
|
|
||||||
SLIT
|
SLIT
|
||||||
----
|
----
|
||||||
|
|
|
@ -68,11 +68,11 @@ public:
|
||||||
/// specialized
|
/// specialized
|
||||||
void setDefaultValue();
|
void setDefaultValue();
|
||||||
/// specialized
|
/// specialized
|
||||||
void setFromString(const char *strval);
|
virtual void setFromString(const char *strval);
|
||||||
/// specialized
|
/// specialized
|
||||||
// name and altname may be different to the primary ones (e.g. from fallback)
|
// name and altname may be different to the primary ones (e.g. from fallback)
|
||||||
// if they are null, then the original name is used
|
// if they are null, then the original name is used
|
||||||
void load(const std::string *name = 0, const std::string *altname = 0);
|
virtual void load(const std::string *name = 0, const std::string *altname = 0);
|
||||||
/**
|
/**
|
||||||
@name access operators
|
@name access operators
|
||||||
*/
|
*/
|
||||||
|
|
221
src/RootTheme.cc
221
src/RootTheme.cc
|
@ -48,7 +48,8 @@ using std::string;
|
||||||
class BackgroundItem: public FbTk::ThemeItem<FbTk::Texture> {
|
class BackgroundItem: public FbTk::ThemeItem<FbTk::Texture> {
|
||||||
public:
|
public:
|
||||||
BackgroundItem(FbTk::Theme &tm, const std::string &name, const std::string &altname):
|
BackgroundItem(FbTk::Theme &tm, const std::string &name, const std::string &altname):
|
||||||
FbTk::ThemeItem<FbTk::Texture>(tm, name, altname) {
|
FbTk::ThemeItem<FbTk::Texture>(tm, name, altname),
|
||||||
|
m_changed(false), m_loaded(false) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,6 +57,9 @@ public:
|
||||||
const string &m_name = (o_name == 0) ? name() : *o_name;
|
const string &m_name = (o_name == 0) ? name() : *o_name;
|
||||||
const string &m_altname = (o_altname == 0) ? altName() : *o_altname;
|
const string &m_altname = (o_altname == 0) ? altName() : *o_altname;
|
||||||
|
|
||||||
|
// if we got this far, then the background was loaded
|
||||||
|
m_loaded = true;
|
||||||
|
|
||||||
// create subnames
|
// create subnames
|
||||||
string color_name(FbTk::ThemeManager::instance().
|
string color_name(FbTk::ThemeManager::instance().
|
||||||
resourceValue(m_name + ".color", m_altname + ".Color"));
|
resourceValue(m_name + ".color", m_altname + ".Color"));
|
||||||
|
@ -63,9 +67,59 @@ public:
|
||||||
resourceValue(m_name + ".colorTo", m_altname + ".ColorTo"));
|
resourceValue(m_name + ".colorTo", m_altname + ".ColorTo"));
|
||||||
string pixmap_name(FbTk::ThemeManager::instance().
|
string pixmap_name(FbTk::ThemeManager::instance().
|
||||||
resourceValue(m_name + ".pixmap", m_altname + ".Pixmap"));
|
resourceValue(m_name + ".pixmap", m_altname + ".Pixmap"));
|
||||||
|
string mod_x(FbTk::ThemeManager::instance().
|
||||||
|
resourceValue(m_name + ".modX", m_altname + ".ModX"));
|
||||||
|
string mod_y(FbTk::ThemeManager::instance().
|
||||||
|
resourceValue(m_name + ".modY", m_altname + ".ModY"));
|
||||||
|
|
||||||
|
// validate mod_x and mod_y
|
||||||
|
if (mod_x.length() > 2)
|
||||||
|
mod_x.erase(2,mod_x.length()); // shouldn't be longer than 2 digits
|
||||||
|
if (mod_y.length() > 2)
|
||||||
|
mod_y.erase(2,mod_y.length()); // ditto
|
||||||
|
// should be integers
|
||||||
|
if (!mod_x.length() || mod_x[0] < '0' || mod_x[0] > '9' ||
|
||||||
|
(mod_x.length() == 2 && (mod_x[1] < '0' || mod_x[1] > '9')))
|
||||||
|
mod_x = "1";
|
||||||
|
if (!mod_y.length() || mod_y[0] < '0' || mod_y[0] > '9' ||
|
||||||
|
(mod_y.length() == 2 && (mod_y[1] < '0' || mod_y[1] > '9')))
|
||||||
|
mod_y = "1";
|
||||||
|
|
||||||
|
// check if any of our values have changed
|
||||||
|
if (mod_x != m_mod_x) {
|
||||||
|
m_changed = true;
|
||||||
|
m_mod_x = mod_x;
|
||||||
|
}
|
||||||
|
if (mod_y != m_mod_y) {
|
||||||
|
m_changed = true;
|
||||||
|
m_mod_y = mod_y;
|
||||||
|
}
|
||||||
|
// these aren't quite right, but I don't care
|
||||||
|
if (color_name != m_color) {
|
||||||
|
m_changed = true;
|
||||||
|
m_color = color_name;
|
||||||
|
}
|
||||||
|
if (colorto_name != m_color_to) {
|
||||||
|
m_changed = true;
|
||||||
|
m_color_to = colorto_name;
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove whitespace from filename
|
||||||
|
FbTk::StringUtil::removeFirstWhitespace(pixmap_name);
|
||||||
|
FbTk::StringUtil::removeTrailingWhitespace(pixmap_name);
|
||||||
|
|
||||||
|
if (mod_x != m_mod_x || mod_y != m_mod_y || pixmap_name != m_filename ||
|
||||||
|
color_name != m_color || colorto_name != m_color_to) {
|
||||||
|
m_changed = true;
|
||||||
|
m_mod_x = mod_x;
|
||||||
|
m_mod_y = mod_y;
|
||||||
|
m_filename = pixmap_name;
|
||||||
|
|
||||||
|
// these aren't quite right because of defaults set below
|
||||||
|
m_color = color_name;
|
||||||
|
m_color_to = colorto_name;
|
||||||
|
}
|
||||||
|
|
||||||
m_color = color_name;
|
|
||||||
m_color_to = colorto_name;
|
|
||||||
// set default value if we failed to load colors
|
// set default value if we failed to load colors
|
||||||
if (!(*this)->color().setFromString(color_name.c_str(),
|
if (!(*this)->color().setFromString(color_name.c_str(),
|
||||||
theme().screenNum()))
|
theme().screenNum()))
|
||||||
|
@ -79,11 +133,6 @@ public:
|
||||||
if (((*this)->type() & FbTk::Texture::SOLID) != 0 && ((*this)->type() & FbTk::Texture::FLAT) == 0)
|
if (((*this)->type() & FbTk::Texture::SOLID) != 0 && ((*this)->type() & FbTk::Texture::FLAT) == 0)
|
||||||
(*this)->calcHiLoColors(theme().screenNum());
|
(*this)->calcHiLoColors(theme().screenNum());
|
||||||
|
|
||||||
// remove whitespace and set filename
|
|
||||||
FbTk::StringUtil::removeFirstWhitespace(pixmap_name);
|
|
||||||
FbTk::StringUtil::removeTrailingWhitespace(pixmap_name);
|
|
||||||
m_filename = pixmap_name;
|
|
||||||
|
|
||||||
// we dont load any pixmap, using external command to set background pixmap
|
// we dont load any pixmap, using external command to set background pixmap
|
||||||
(*this)->pixmap() = 0;
|
(*this)->pixmap() = 0;
|
||||||
}
|
}
|
||||||
|
@ -96,9 +145,17 @@ public:
|
||||||
const std::string &options() const { return m_options; }
|
const std::string &options() const { return m_options; }
|
||||||
const std::string &colorString() const { return m_color; }
|
const std::string &colorString() const { return m_color; }
|
||||||
const std::string &colorToString() const { return m_color_to; }
|
const std::string &colorToString() const { return m_color_to; }
|
||||||
|
const std::string &modX() const { return m_mod_x; }
|
||||||
|
const std::string &modY() const { return m_mod_y; }
|
||||||
|
bool changed() const { return m_changed; }
|
||||||
|
bool loaded() const { return m_loaded; }
|
||||||
|
void setApplied() { m_changed = false; }
|
||||||
|
void unsetLoaded() { m_loaded = false; }
|
||||||
private:
|
private:
|
||||||
std::string m_filename, m_options;
|
std::string m_filename, m_options;
|
||||||
std::string m_color, m_color_to;
|
std::string m_color, m_color_to;
|
||||||
|
std::string m_mod_x, m_mod_y;
|
||||||
|
bool m_changed, m_loaded;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -108,9 +165,7 @@ RootTheme::RootTheme(const std::string &root_command,
|
||||||
m_background(new BackgroundItem(*this, "background", "Background")),
|
m_background(new BackgroundItem(*this, "background", "Background")),
|
||||||
m_opgc(RootWindow(FbTk::App::instance()->display(), image_control.screenNumber())),
|
m_opgc(RootWindow(FbTk::App::instance()->display(), image_control.screenNumber())),
|
||||||
m_root_command(root_command),
|
m_root_command(root_command),
|
||||||
m_image_ctrl(image_control),
|
m_image_ctrl(image_control) {
|
||||||
m_already_set(false),
|
|
||||||
m_background_loaded(true) {
|
|
||||||
|
|
||||||
Display *disp = FbTk::App::instance()->display();
|
Display *disp = FbTk::App::instance()->display();
|
||||||
m_opgc.setForeground(WhitePixel(disp, screenNum())^BlackPixel(disp, screenNum()));
|
m_opgc.setForeground(WhitePixel(disp, screenNum())^BlackPixel(disp, screenNum()));
|
||||||
|
@ -129,7 +184,7 @@ bool RootTheme::fallback(FbTk::ThemeItem_base &item) {
|
||||||
// we can deal with it in reconfigureTheme()
|
// we can deal with it in reconfigureTheme()
|
||||||
if (item.name() == "background") {
|
if (item.name() == "background") {
|
||||||
// mark no background loaded
|
// mark no background loaded
|
||||||
m_background_loaded = false;
|
m_background->unsetLoaded();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -138,10 +193,19 @@ bool RootTheme::fallback(FbTk::ThemeItem_base &item) {
|
||||||
void RootTheme::reconfigTheme() {
|
void RootTheme::reconfigTheme() {
|
||||||
_FB_USES_NLS;
|
_FB_USES_NLS;
|
||||||
|
|
||||||
if (m_already_set)
|
if (!m_background->loaded()) {
|
||||||
|
cerr<<"Fluxbox: "<<
|
||||||
|
_FB_CONSOLETEXT(Common, BackgroundWarning,
|
||||||
|
"There is no background option specified in this style."
|
||||||
|
" Please consult the manual or read the FAQ.",
|
||||||
|
"Background missing warning")<<endl;
|
||||||
return;
|
return;
|
||||||
else
|
}
|
||||||
m_already_set = true;
|
|
||||||
|
if (!m_background->changed())
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_background->setApplied();
|
||||||
|
|
||||||
// if user specified background in the config then use it
|
// if user specified background in the config then use it
|
||||||
// instead of style background
|
// instead of style background
|
||||||
|
@ -151,6 +215,11 @@ void RootTheme::reconfigTheme() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// style doesn't wish to change the background
|
||||||
|
if (strstr(m_background->options().c_str(), "none") != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Else parse background from style
|
// Else parse background from style
|
||||||
//
|
//
|
||||||
|
@ -158,84 +227,70 @@ void RootTheme::reconfigTheme() {
|
||||||
// root window helper
|
// root window helper
|
||||||
FbRootWindow rootwin(screenNum());
|
FbRootWindow rootwin(screenNum());
|
||||||
|
|
||||||
// if the background theme item was not loaded
|
// handle background option in style
|
||||||
|
std::string filename = m_background->filename();
|
||||||
if (!m_background_loaded) {
|
FbTk::StringUtil::removeTrailingWhitespace(filename);
|
||||||
cerr<<"Fluxbox: "<<
|
FbTk::StringUtil::removeFirstWhitespace(filename);
|
||||||
_FB_CONSOLETEXT(Common, BackgroundWarning,
|
// if background argument is a file then
|
||||||
"There is no background option specified in this style."
|
// parse image options and call image setting
|
||||||
" Please consult the manual or read the FAQ.",
|
// command specified in the resources
|
||||||
"Background missing warning")<<endl;
|
filename = FbTk::StringUtil::expandFilename(filename);
|
||||||
} else {
|
if (FbTk::FileUtil::isRegularFile(filename.c_str())) {
|
||||||
// handle background option in style
|
// parse options
|
||||||
std::string filename = m_background->filename();
|
std::string options;
|
||||||
FbTk::StringUtil::removeTrailingWhitespace(filename);
|
if (strstr(m_background->options().c_str(), "tiled") != 0)
|
||||||
FbTk::StringUtil::removeFirstWhitespace(filename);
|
options += "-t ";
|
||||||
// if background argument is a file then
|
if (strstr(m_background->options().c_str(), "centered") != 0)
|
||||||
// parse image options and call image setting
|
options += "-c ";
|
||||||
// command specified in the resources
|
if (strstr(m_background->options().c_str(), "aspect") != 0)
|
||||||
filename = FbTk::StringUtil::expandFilename(filename);
|
options += "-a ";
|
||||||
if (FbTk::FileUtil::isRegularFile(filename.c_str())) {
|
|
||||||
// parse options
|
|
||||||
std::string options;
|
|
||||||
if (strstr(m_background->options().c_str(), "tiled") != 0)
|
|
||||||
options += "-t ";
|
|
||||||
if (strstr(m_background->options().c_str(), "centered") != 0)
|
|
||||||
options += "-c ";
|
|
||||||
if (strstr(m_background->options().c_str(), "aspect") != 0)
|
|
||||||
options += "-a ";
|
|
||||||
|
|
||||||
// compose wallpaper application "fbsetbg" with argumetns
|
// compose wallpaper application "fbsetbg" with argumetns
|
||||||
std::string commandargs = "fbsetbg " + options + " " + filename;
|
std::string commandargs = "fbsetbg " + options + " " + filename;
|
||||||
|
|
||||||
// call command with options
|
// call command with options
|
||||||
FbCommands::ExecuteCmd exec(commandargs, screenNum());
|
FbCommands::ExecuteCmd exec(commandargs, screenNum());
|
||||||
exec.execute();
|
exec.execute();
|
||||||
|
|
||||||
} else if (FbTk::FileUtil::isDirectory(filename.c_str()) &&
|
} else if (FbTk::FileUtil::isDirectory(filename.c_str()) &&
|
||||||
strstr(m_background->options().c_str(), "random") != 0) {
|
strstr(m_background->options().c_str(), "random") != 0) {
|
||||||
std::string commandargs = "fbsetbg -r " + filename;
|
std::string commandargs = "fbsetbg -r " + filename;
|
||||||
FbCommands::ExecuteCmd exec(commandargs, screenNum());
|
FbCommands::ExecuteCmd exec(commandargs, screenNum());
|
||||||
exec.execute();
|
exec.execute();
|
||||||
} else {
|
} else {
|
||||||
// render normal texture with fbsetroot
|
// render normal texture with fbsetroot
|
||||||
|
|
||||||
|
|
||||||
// Make sure the color strings are valid,
|
// Make sure the color strings are valid,
|
||||||
// so we dont pass any `commands` that can be executed
|
// so we dont pass any `commands` that can be executed
|
||||||
bool color_valid =
|
bool color_valid =
|
||||||
FbTk::Color::validColorString(m_background->colorString().c_str(),
|
FbTk::Color::validColorString(m_background->colorString().c_str(),
|
||||||
screenNum());
|
screenNum());
|
||||||
bool color_to_valid =
|
bool color_to_valid =
|
||||||
FbTk::Color::validColorString(m_background->colorToString().c_str(),
|
FbTk::Color::validColorString(m_background->colorToString().c_str(),
|
||||||
screenNum());
|
screenNum());
|
||||||
|
|
||||||
std::string options;
|
std::string options;
|
||||||
if (color_valid)
|
if (color_valid)
|
||||||
options += "-foreground '" + m_background->colorString() + "' ";
|
options += "-foreground '" + m_background->colorString() + "' ";
|
||||||
if (color_to_valid)
|
if (color_to_valid)
|
||||||
options += "-background '" + m_background->colorToString() + "' ";
|
options += "-background '" + m_background->colorToString() + "' ";
|
||||||
|
|
||||||
if ((*m_background)->type() & FbTk::Texture::SOLID && color_valid)
|
if (strstr(m_background->options().c_str(), "mod") != 0)
|
||||||
options += "-solid '" + m_background->colorString() + "' ";
|
options += "-mod " + m_background->modX() + " " + m_background->modY();
|
||||||
|
else if ((*m_background)->type() & FbTk::Texture::SOLID && color_valid)
|
||||||
|
options += "-solid '" + m_background->colorString() + "' ";
|
||||||
|
|
||||||
if ((*m_background)->type() & FbTk::Texture::GRADIENT) {
|
else if ((*m_background)->type() & FbTk::Texture::GRADIENT) {
|
||||||
|
options += "-gradient '" + m_background->options() + "'";
|
||||||
if (color_valid)
|
|
||||||
options += "-from '" + m_background->colorString() + "' ";
|
|
||||||
if (color_to_valid)
|
|
||||||
options += "-to '" + m_background->colorToString() + "' ";
|
|
||||||
|
|
||||||
options += "-gradient '" + m_background->options() + "'";
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string commandargs = "fbsetroot " + options;
|
|
||||||
|
|
||||||
FbCommands::ExecuteCmd exec(commandargs, screenNum());
|
|
||||||
exec.execute();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rootwin.clear();
|
std::string commandargs = "fbsetroot " + options;
|
||||||
|
|
||||||
|
FbCommands::ExecuteCmd exec(commandargs, screenNum());
|
||||||
|
exec.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rootwin.clear();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,8 +51,6 @@ public:
|
||||||
|
|
||||||
bool fallback(FbTk::ThemeItem_base &item);
|
bool fallback(FbTk::ThemeItem_base &item);
|
||||||
void reconfigTheme();
|
void reconfigTheme();
|
||||||
// little hack to deal with reconfigures -- should be fixed
|
|
||||||
void setLoaded() { m_background_loaded = true; m_already_set = false; }
|
|
||||||
|
|
||||||
GC opGC() const { return m_opgc.gc(); }
|
GC opGC() const { return m_opgc.gc(); }
|
||||||
|
|
||||||
|
@ -68,8 +66,6 @@ private:
|
||||||
FbTk::GContext m_opgc;
|
FbTk::GContext m_opgc;
|
||||||
const std::string &m_root_command;
|
const std::string &m_root_command;
|
||||||
FbTk::ImageControl &m_image_ctrl; ///< image control for rendering background texture
|
FbTk::ImageControl &m_image_ctrl; ///< image control for rendering background texture
|
||||||
bool m_already_set;
|
|
||||||
bool m_background_loaded; ///< whether or not the background is present in the style file
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -913,8 +913,6 @@ void BScreen::reconfigure() {
|
||||||
// notify objects that the screen is reconfigured
|
// notify objects that the screen is reconfigured
|
||||||
m_reconfigure_sig.notify();
|
m_reconfigure_sig.notify();
|
||||||
|
|
||||||
m_root_theme->setLoaded();
|
|
||||||
|
|
||||||
// Reload style
|
// Reload style
|
||||||
FbTk::ThemeManager::instance().load(fluxbox->getStyleFilename(),
|
FbTk::ThemeManager::instance().load(fluxbox->getStyleFilename(),
|
||||||
fluxbox->getStyleOverlayFilename(),
|
fluxbox->getStyleOverlayFilename(),
|
||||||
|
|
Loading…
Reference in a new issue