add window.label.active theme items
This commit is contained in:
parent
d84054ec5d
commit
15b41a3c35
6 changed files with 94 additions and 30 deletions
|
@ -1,5 +1,12 @@
|
|||
(Format: Year/Month/Day)
|
||||
Changes for 0.9.7:
|
||||
*03/12/09:
|
||||
* New theme items: (Simon)
|
||||
window.label.active: <texture>
|
||||
window.label.active.textColor: <color>
|
||||
For highlighting the active (visible) tab when not in focus.
|
||||
- fixes bug with unfocused windows not getting unfocus.textColor
|
||||
FbWinFrame.hh/cc FbWinFrameTheme.hh/cc
|
||||
*03/12/08:
|
||||
* fbsetbg now remembers -u option and it also has (Han)
|
||||
a new -U option which does the same thing without remembering
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
// $Id: FbWinFrame.cc,v 1.63 2003/12/07 16:39:43 fluxgen Exp $
|
||||
// $Id: FbWinFrame.cc,v 1.64 2003/12/09 08:48:08 rathnor Exp $
|
||||
|
||||
#include "FbWinFrame.hh"
|
||||
|
||||
|
@ -235,7 +235,7 @@ void FbWinFrame::setFocus(bool newvalue) {
|
|||
if (newvalue) // focused
|
||||
renderButtonFocus(*m_current_label);
|
||||
else // unfocused
|
||||
renderButtonUnfocus(*m_current_label);
|
||||
renderButtonActive(*m_current_label);
|
||||
}
|
||||
|
||||
renderTitlebar();
|
||||
|
@ -287,6 +287,9 @@ void FbWinFrame::addLabelButton(FbTk::TextButton &btn) {
|
|||
return;
|
||||
|
||||
m_labelbuttons.push_back(&btn);
|
||||
|
||||
if (currentLabel() == 0)
|
||||
setLabelButtonFocus(btn);
|
||||
}
|
||||
|
||||
void FbWinFrame::removeLabelButton(FbTk::TextButton &btn) {
|
||||
|
@ -355,7 +358,10 @@ void FbWinFrame::setLabelButtonFocus(FbTk::TextButton &btn) {
|
|||
|
||||
m_current_label = *it; // current focused button
|
||||
|
||||
renderButtonFocus(*m_current_label);
|
||||
if (m_focused)
|
||||
renderButtonFocus(*m_current_label);
|
||||
else
|
||||
renderButtonActive(*m_current_label);
|
||||
}
|
||||
|
||||
void FbWinFrame::setClientWindow(FbTk::FbWindow &win) {
|
||||
|
@ -688,6 +694,7 @@ void FbWinFrame::reconfigure() {
|
|||
m_shape->update();
|
||||
|
||||
// titlebar stuff rendered already by reconftitlebar
|
||||
|
||||
}
|
||||
|
||||
void FbWinFrame::setUseShape(bool value) {
|
||||
|
@ -833,6 +840,11 @@ void FbWinFrame::renderTitlebar() {
|
|||
m_label_unfocused_pm,
|
||||
m_label.width(), m_label.height());
|
||||
|
||||
render(m_theme.labelActiveTexture(), m_label_active_color,
|
||||
m_label_active_pm,
|
||||
m_label.width(), m_label.height());
|
||||
|
||||
|
||||
// finaly set up pixmaps for titlebar windows
|
||||
Pixmap label_pm = None;
|
||||
Pixmap title_pm = None;
|
||||
|
@ -973,7 +985,7 @@ void FbWinFrame::init() {
|
|||
|
||||
// clear pixmaps
|
||||
m_title_focused_pm = m_title_unfocused_pm = 0;
|
||||
m_label_focused_pm = m_label_unfocused_pm = 0;
|
||||
m_label_focused_pm = m_label_unfocused_pm = m_label_active_pm = 0;
|
||||
m_handle_focused_pm = m_handle_unfocused_pm = 0;
|
||||
m_button_pm = m_button_unfocused_pm = m_button_pressed_pm = 0;
|
||||
m_grip_unfocused_pm = m_grip_focused_pm = 0;
|
||||
|
@ -1049,19 +1061,21 @@ void FbWinFrame::getCurrentFocusPixmap(Pixmap &label_pm, Pixmap &title_pm,
|
|||
title_color = m_title_focused_color;
|
||||
|
||||
} else {
|
||||
getUnfocusPixmap(label_pm, title_pm,
|
||||
label_color, title_color);
|
||||
getActiveLabelPixmap(label_pm, title_pm,
|
||||
label_color, title_color);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void FbWinFrame::getUnfocusPixmap(Pixmap &label_pm, Pixmap &title_pm,
|
||||
// only called if not focused
|
||||
void FbWinFrame::getActiveLabelPixmap(Pixmap &label_pm, Pixmap &title_pm,
|
||||
FbTk::Color &label_color,
|
||||
FbTk::Color &title_color) {
|
||||
if (m_label_unfocused_pm != 0) {
|
||||
label_pm = m_label_unfocused_pm;
|
||||
} else
|
||||
label_color = m_label_unfocused_color;
|
||||
|
||||
if (m_label_active_pm != 0)
|
||||
label_pm = m_label_active_pm;
|
||||
else
|
||||
label_color = m_label_active_color;
|
||||
|
||||
if (m_title_unfocused_pm != 0)
|
||||
title_pm = m_title_unfocused_pm;
|
||||
|
@ -1081,9 +1095,12 @@ void FbWinFrame::renderLabelButtons() {
|
|||
LabelList::iterator btn_it = m_labelbuttons.begin();
|
||||
LabelList::iterator btn_it_end = m_labelbuttons.end();
|
||||
for (; btn_it != btn_it_end; ++btn_it) {
|
||||
if (*btn_it == m_current_label)
|
||||
renderButtonFocus(**btn_it);
|
||||
else
|
||||
if (*btn_it == m_current_label) {
|
||||
if (m_focused)
|
||||
renderButtonFocus(**btn_it);
|
||||
else
|
||||
renderButtonActive(**btn_it);
|
||||
} else
|
||||
renderButtonUnfocus(**btn_it);
|
||||
|
||||
}
|
||||
|
@ -1136,15 +1153,34 @@ void FbWinFrame::renderButtonFocus(FbTk::TextButton &button) {
|
|||
|
||||
if (m_label_focused_pm != 0) {
|
||||
// already set
|
||||
if (button.backgroundPixmap() == m_label_focused_pm)
|
||||
return;
|
||||
button.setBackgroundPixmap(m_label_focused_pm);
|
||||
if (button.backgroundPixmap() != m_label_focused_pm)
|
||||
button.setBackgroundPixmap(m_label_focused_pm);
|
||||
} else
|
||||
button.setBackgroundColor(m_label_focused_color);
|
||||
|
||||
button.clear();
|
||||
}
|
||||
|
||||
void FbWinFrame::renderButtonActive(FbTk::TextButton &button) {
|
||||
|
||||
button.setGC(theme().labelTextActiveGC());
|
||||
button.setJustify(theme().justify());
|
||||
button.setBorderWidth(1);
|
||||
button.setAlpha(theme().alpha());
|
||||
|
||||
if (m_label_active_pm == 0)
|
||||
m_label_active_pm = m_label_unfocused_pm;
|
||||
|
||||
if (m_label_active_pm != 0) {
|
||||
// already set
|
||||
if (button.backgroundPixmap() != m_label_active_pm)
|
||||
button.setBackgroundPixmap(m_label_active_pm);
|
||||
} else
|
||||
button.setBackgroundColor(m_label_active_color);
|
||||
|
||||
button.clear();
|
||||
}
|
||||
|
||||
void FbWinFrame::renderButtonUnfocus(FbTk::TextButton &button) {
|
||||
|
||||
button.setGC(theme().labelTextUnfocusGC());
|
||||
|
@ -1154,9 +1190,8 @@ void FbWinFrame::renderButtonUnfocus(FbTk::TextButton &button) {
|
|||
|
||||
if (m_label_unfocused_pm != 0) {
|
||||
// already set
|
||||
if (button.backgroundPixmap() == m_label_unfocused_pm)
|
||||
return;
|
||||
button.setBackgroundPixmap(m_label_unfocused_pm);
|
||||
if (button.backgroundPixmap() != m_label_unfocused_pm)
|
||||
button.setBackgroundPixmap(m_label_unfocused_pm);
|
||||
} else
|
||||
button.setBackgroundColor(m_label_unfocused_color);
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
// $Id: FbWinFrame.hh,v 1.24 2003/10/28 02:17:02 rathnor Exp $
|
||||
// $Id: FbWinFrame.hh,v 1.25 2003/12/09 08:48:08 rathnor Exp $
|
||||
|
||||
#ifndef FBWINFRAME_HH
|
||||
#define FBWINFRAME_HH
|
||||
|
@ -197,14 +197,18 @@ private:
|
|||
void renderTitlebar();
|
||||
void renderHandles();
|
||||
void renderButtons();
|
||||
// focused => has focus
|
||||
void renderButtonFocus(FbTk::TextButton &button);
|
||||
// unfocus => has no focus, label not the active one
|
||||
void renderButtonUnfocus(FbTk::TextButton &button);
|
||||
// active => doesn't have keybaord focus, but is the active tab
|
||||
void renderButtonActive(FbTk::TextButton &button);
|
||||
void renderLabel();
|
||||
/// renders to pixmap or sets color
|
||||
void render(const FbTk::Texture &tex, FbTk::Color &col, Pixmap &pm,
|
||||
unsigned int width, unsigned int height);
|
||||
void getUnfocusPixmap(Pixmap &label_pm, Pixmap &title_pm,
|
||||
FbTk::Color &label_color, FbTk::Color &title_color);
|
||||
void getActiveLabelPixmap(Pixmap &label_pm, Pixmap &title_pm,
|
||||
FbTk::Color &label_color, FbTk::Color &title_color);
|
||||
void getCurrentFocusPixmap(Pixmap &label_pm, Pixmap &title_pm,
|
||||
FbTk::Color &label_color, FbTk::Color &title_color);
|
||||
void renderLabelButtons();
|
||||
|
@ -256,6 +260,8 @@ private:
|
|||
FbTk::Color m_label_focused_color; ///< color for focused label
|
||||
Pixmap m_label_unfocused_pm; ///< pixmap for unfocused label
|
||||
FbTk::Color m_label_unfocused_color; ///< color for unfocued label
|
||||
Pixmap m_label_active_pm; ///< pixmap for active label
|
||||
FbTk::Color m_label_active_color; ///< color for active label
|
||||
|
||||
FbTk::Color m_handle_focused_color, m_handle_unfocused_color;
|
||||
Pixmap m_handle_focused_pm, m_handle_unfocused_pm;
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
// $Id: FbWinFrameTheme.cc,v 1.13 2003/09/29 12:53:58 rathnor Exp $
|
||||
// $Id: FbWinFrameTheme.cc,v 1.14 2003/12/09 08:48:08 rathnor Exp $
|
||||
|
||||
#include "FbWinFrameTheme.hh"
|
||||
#include "App.hh"
|
||||
|
@ -27,11 +27,13 @@
|
|||
#include <X11/cursorfont.h>
|
||||
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
FbWinFrameTheme::FbWinFrameTheme(int screen_num):
|
||||
FbTk::Theme(screen_num),
|
||||
m_label_focus(*this, "window.label.focus", "Window.Label.Focus"),
|
||||
m_label_unfocus(*this, "window.label.unfocus", "Window.Label.Unfocus"),
|
||||
m_label_active(*this, "window.label.active", "Window.Label.Active"),
|
||||
|
||||
m_title_focus(*this, "window.title.focus", "Window.Title.Focus"),
|
||||
m_title_unfocus(*this, "window.title.unfocus", "Window.Title.Unfocus"),
|
||||
|
@ -48,6 +50,7 @@ FbWinFrameTheme::FbWinFrameTheme(int screen_num):
|
|||
|
||||
m_label_focus_color(*this, "window.label.focus.textColor", "Window.Label.Focus.TextColor"),
|
||||
m_label_unfocus_color(*this, "window.label.unfocus.textColor", "Window.Label.Unfocus.TextColor"),
|
||||
m_label_active_color(*this, "window.label.active.textColor", "Window.Label.Active.TextColor"),
|
||||
|
||||
m_frame_focus_color(*this, "window.frame.focusColor", "Window.Frame.FocusColor"),
|
||||
m_frame_unfocus_color(*this, "window.frame.unfocusColor", "Window.Frame.UnfocusColor"),
|
||||
|
@ -65,6 +68,7 @@ FbWinFrameTheme::FbWinFrameTheme(int screen_num):
|
|||
m_border(*this, "window", "Window"), // for window.border*
|
||||
m_label_text_focus_gc(RootWindow(FbTk::App::instance()->display(), screen_num)),
|
||||
m_label_text_unfocus_gc(RootWindow(FbTk::App::instance()->display(), screen_num)),
|
||||
m_label_text_active_gc(RootWindow(FbTk::App::instance()->display(), screen_num)),
|
||||
m_button_pic_focus_gc(RootWindow(FbTk::App::instance()->display(), screen_num)),
|
||||
m_button_pic_unfocus_gc(RootWindow(FbTk::App::instance()->display(), screen_num)) {
|
||||
|
||||
|
@ -80,6 +84,8 @@ FbWinFrameTheme::FbWinFrameTheme(int screen_num):
|
|||
m_cursor_lower_right_angle = XCreateFontCursor(disp, XC_lr_angle);
|
||||
m_cursor_upper_right_angle = XCreateFontCursor(disp, XC_ur_angle);
|
||||
m_cursor_upper_left_angle = XCreateFontCursor(disp, XC_ul_angle);
|
||||
|
||||
reconfigTheme();
|
||||
}
|
||||
|
||||
FbWinFrameTheme::~FbWinFrameTheme() {
|
||||
|
@ -95,6 +101,11 @@ bool FbWinFrameTheme::fallback(FbTk::ThemeItem_base &item) {
|
|||
return FbTk::ThemeManager::instance().loadItem(item, "bevelWidth", "bevelWidth");
|
||||
else if (item.name() == "window.handleWidth")
|
||||
return FbTk::ThemeManager::instance().loadItem(item, "handleWidth", "HandleWidth");
|
||||
else if (item.name() == "window.label.active")
|
||||
return FbTk::ThemeManager::instance().loadItem(item, "window.label.unfocus", "Window.Label.Unfocus");
|
||||
else if (item.name() == "window.label.active.textColor")
|
||||
return FbTk::ThemeManager::instance().loadItem(item, "window.label.unfocus.textColor", "Window.Label.Unfocus.TextColor");
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -117,6 +128,7 @@ void FbWinFrameTheme::reconfigTheme() {
|
|||
|
||||
m_label_text_focus_gc.setForeground(*m_label_focus_color);
|
||||
m_label_text_unfocus_gc.setForeground(*m_label_unfocus_color);
|
||||
m_label_text_active_gc.setForeground(*m_label_active_color);
|
||||
m_button_pic_focus_gc.setForeground(*m_button_focus_color);
|
||||
m_button_pic_unfocus_gc.setForeground(*m_button_unfocus_color);
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
// $Id: FbWinFrameTheme.hh,v 1.12 2003/09/29 12:53:58 rathnor Exp $
|
||||
// $Id: FbWinFrameTheme.hh,v 1.13 2003/12/09 08:48:08 rathnor Exp $
|
||||
|
||||
#ifndef FBWINFRAMETHEME_HH
|
||||
#define FBWINFRAMETHEME_HH
|
||||
|
@ -45,6 +45,7 @@ public:
|
|||
//@{
|
||||
const FbTk::Texture &labelFocusTexture() const { return *m_label_focus; }
|
||||
const FbTk::Texture &labelUnfocusTexture() const { return *m_label_unfocus; }
|
||||
const FbTk::Texture &labelActiveTexture() const { return *m_label_active; }
|
||||
|
||||
const FbTk::Texture &titleFocusTexture() const { return *m_title_focus; }
|
||||
const FbTk::Texture &titleUnfocusTexture() const { return *m_title_unfocus; }
|
||||
|
@ -66,6 +67,8 @@ public:
|
|||
//@{
|
||||
const FbTk::Color &labelFocusColor() const { return *m_label_focus_color; }
|
||||
const FbTk::Color &labelUnfocusColor() const { return *m_label_unfocus_color; }
|
||||
const FbTk::Color &labelActiveColor() const { return *m_label_active_color; }
|
||||
|
||||
const FbTk::Color &frameFocuscolor() const { return *m_frame_focus_color; }
|
||||
const FbTk::Color &frameUnfocuscolor() const { return *m_frame_unfocus_color; }
|
||||
const FbTk::Color &buttonFocuscolor() const { return *m_button_focus_color; }
|
||||
|
@ -78,6 +81,7 @@ public:
|
|||
|
||||
GC labelTextFocusGC() const { return m_label_text_focus_gc.gc(); }
|
||||
GC labelTextUnfocusGC() const { return m_label_text_unfocus_gc.gc(); }
|
||||
GC labelTextActiveGC() const { return m_label_text_active_gc.gc(); }
|
||||
GC buttonPicFocusGC() const { return m_button_pic_focus_gc.gc(); }
|
||||
GC buttonPicUnfocusGC() const { return m_button_pic_unfocus_gc.gc(); }
|
||||
|
||||
|
@ -102,13 +106,13 @@ public:
|
|||
unsigned int handleWidth() const { return *m_handle_width; }
|
||||
|
||||
private:
|
||||
FbTk::ThemeItem<FbTk::Texture> m_label_focus, m_label_unfocus;
|
||||
FbTk::ThemeItem<FbTk::Texture> m_label_focus, m_label_unfocus, m_label_active;
|
||||
FbTk::ThemeItem<FbTk::Texture> m_title_focus, m_title_unfocus;
|
||||
FbTk::ThemeItem<FbTk::Texture> m_handle_focus, m_handle_unfocus;
|
||||
FbTk::ThemeItem<FbTk::Texture> m_button_focus, m_button_unfocus, m_button_pressed;
|
||||
FbTk::ThemeItem<FbTk::Texture> m_grip_focus, m_grip_unfocus;
|
||||
|
||||
FbTk::ThemeItem<FbTk::Color> m_label_focus_color, m_label_unfocus_color;
|
||||
FbTk::ThemeItem<FbTk::Color> m_label_focus_color, m_label_unfocus_color, m_label_active_color;
|
||||
FbTk::ThemeItem<FbTk::Color> m_frame_focus_color, m_frame_unfocus_color;
|
||||
FbTk::ThemeItem<FbTk::Color> m_button_focus_color, m_button_unfocus_color;
|
||||
|
||||
|
@ -119,7 +123,7 @@ private:
|
|||
FbTk::ThemeItem<int> m_alpha, m_title_height, m_bevel_width, m_handle_width;
|
||||
BorderTheme m_border;
|
||||
|
||||
FbTk::GContext m_label_text_focus_gc, m_label_text_unfocus_gc;
|
||||
FbTk::GContext m_label_text_focus_gc, m_label_text_unfocus_gc, m_label_text_active_gc;
|
||||
FbTk::GContext m_button_pic_focus_gc, m_button_pic_unfocus_gc;
|
||||
|
||||
FbTk::Subject m_theme_change;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
// DEALINGS IN THE SOFTWARE.
|
||||
|
||||
// $Id: main.cc,v 1.24 2003/10/02 16:14:41 rathnor Exp $
|
||||
// $Id: main.cc,v 1.25 2003/12/09 08:48:08 rathnor Exp $
|
||||
|
||||
#include "fluxbox.hh"
|
||||
#include "I18n.hh"
|
||||
|
@ -181,7 +181,7 @@ int main(int argc, char **argv) {
|
|||
exit(0);
|
||||
} else if (strcmp(argv[i], "-log") == 0 ) {
|
||||
if (i + 1 >= argc) {
|
||||
cerr<<"error: '-log' need an argument"<<endl;
|
||||
cerr<<"error: '-log' needs an argument"<<endl;
|
||||
exit(1);
|
||||
}
|
||||
log_filename = argv[++i];
|
||||
|
|
Loading…
Reference in a new issue