diff options
author | Mark Tiefenbruck <mark@fluxbox.org> | 2007-12-23 21:33:10 (GMT) |
---|---|---|
committer | Mark Tiefenbruck <mark@fluxbox.org> | 2007-12-23 21:33:10 (GMT) |
commit | fbc305ca80e352240b32b833e8388fb9aa99fa72 (patch) | |
tree | ea1c7d2f66b8ede4209f7299a228f36f98086393 /src | |
parent | 1b48b749b9a376c883ff4cc2ca3e807ac85cf21f (diff) | |
download | fluxbox-fbc305ca80e352240b32b833e8388fb9aa99fa72.zip fluxbox-fbc305ca80e352240b32b833e8388fb9aa99fa72.tar.bz2 |
added focused/unfocused borders to styles
Diffstat (limited to 'src')
-rw-r--r-- | src/Ewmh.cc | 4 | ||||
-rw-r--r-- | src/FbWinFrame.cc | 18 | ||||
-rw-r--r-- | src/FbWinFrameTheme.cc | 14 | ||||
-rw-r--r-- | src/FbWinFrameTheme.hh | 4 | ||||
-rw-r--r-- | src/FocusControl.cc | 2 | ||||
-rw-r--r-- | src/Screen.cc | 8 | ||||
-rw-r--r-- | src/Window.cc | 4 |
7 files changed, 32 insertions, 22 deletions
diff --git a/src/Ewmh.cc b/src/Ewmh.cc index 6f0d829..0091981 100644 --- a/src/Ewmh.cc +++ b/src/Ewmh.cc | |||
@@ -811,8 +811,8 @@ bool Ewmh::checkClientMessage(const XClientMessageEvent &ce, | |||
811 | FbWinFrameTheme &theme = screen->winFrameTheme(); | 811 | FbWinFrameTheme &theme = screen->winFrameTheme(); |
812 | long title_h = theme.titleHeight() || | 812 | long title_h = theme.titleHeight() || |
813 | theme.font().height() + 2*theme.bevelWidth() + 2; | 813 | theme.font().height() + 2*theme.bevelWidth() + 2; |
814 | title_h += theme.border().width(); | 814 | title_h += theme.border(true).width(); |
815 | long handle_h = theme.handleWidth() + theme.border().width(); | 815 | long handle_h = theme.handleWidth() + theme.border(true).width(); |
816 | long extents[4]; | 816 | long extents[4]; |
817 | // our frames currently don't protrude from left/right | 817 | // our frames currently don't protrude from left/right |
818 | extents[0] = 0; | 818 | extents[0] = 0; |
diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc index 266ddea..e96b72f 100644 --- a/src/FbWinFrame.cc +++ b/src/FbWinFrame.cc | |||
@@ -127,7 +127,7 @@ bool FbWinFrame::setTabMode(TabMode tabmode) { | |||
127 | if (tabmode == EXTERNAL) { | 127 | if (tabmode == EXTERNAL) { |
128 | m_label.show(); | 128 | m_label.show(); |
129 | m_tab_container.setBorderWidth(m_window.borderWidth()); | 129 | m_tab_container.setBorderWidth(m_window.borderWidth()); |
130 | m_tab_container.setBorderColor(theme().border().color()); | 130 | m_tab_container.setBorderColor(theme().border(m_focused).color()); |
131 | m_tab_container.setEventMask( | 131 | m_tab_container.setEventMask( |
132 | ButtonPressMask | ButtonReleaseMask | | 132 | ButtonPressMask | ButtonReleaseMask | |
133 | ButtonMotionMask | ExposureMask | | 133 | ButtonMotionMask | ExposureMask | |
@@ -498,6 +498,12 @@ void FbWinFrame::setFocus(bool newvalue) { | |||
498 | } | 498 | } |
499 | } | 499 | } |
500 | 500 | ||
501 | if (m_decoration_mask & DECORM_BORDER && | ||
502 | (theme().border(true).width() != theme().border(false).width() || | ||
503 | theme().border(true).color().pixel() != | ||
504 | theme().border(false).color().pixel())) | ||
505 | setBorderWidth(theme().border(newvalue).width()); | ||
506 | |||
501 | applyAll(); | 507 | applyAll(); |
502 | clearAll(); | 508 | clearAll(); |
503 | } | 509 | } |
@@ -1487,21 +1493,21 @@ void FbWinFrame::setBorderWidth(unsigned int border_width) { | |||
1487 | bw_changes += static_cast<signed>(border_width - handle().borderWidth()); | 1493 | bw_changes += static_cast<signed>(border_width - handle().borderWidth()); |
1488 | 1494 | ||
1489 | window().setBorderWidth(border_width); | 1495 | window().setBorderWidth(border_width); |
1490 | window().setBorderColor(theme().border().color()); | 1496 | window().setBorderColor(theme().border(m_focused).color()); |
1491 | 1497 | ||
1492 | setTabMode(NOTSET); | 1498 | setTabMode(NOTSET); |
1493 | 1499 | ||
1494 | titlebar().setBorderWidth(border_width); | 1500 | titlebar().setBorderWidth(border_width); |
1495 | titlebar().setBorderColor(theme().border().color()); | 1501 | titlebar().setBorderColor(theme().border(m_focused).color()); |
1496 | 1502 | ||
1497 | handle().setBorderWidth(border_width); | 1503 | handle().setBorderWidth(border_width); |
1498 | handle().setBorderColor(theme().border().color()); | 1504 | handle().setBorderColor(theme().border(m_focused).color()); |
1499 | 1505 | ||
1500 | gripLeft().setBorderWidth(border_width); | 1506 | gripLeft().setBorderWidth(border_width); |
1501 | gripLeft().setBorderColor(theme().border().color()); | 1507 | gripLeft().setBorderColor(theme().border(m_focused).color()); |
1502 | 1508 | ||
1503 | gripRight().setBorderWidth(border_width); | 1509 | gripRight().setBorderWidth(border_width); |
1504 | gripRight().setBorderColor(theme().border().color()); | 1510 | gripRight().setBorderColor(theme().border(m_focused).color()); |
1505 | 1511 | ||
1506 | if (bw_changes != 0) | 1512 | if (bw_changes != 0) |
1507 | resize(width(), height() + bw_changes); | 1513 | resize(width(), height() + bw_changes); |
diff --git a/src/FbWinFrameTheme.cc b/src/FbWinFrameTheme.cc index 1175297..624c242 100644 --- a/src/FbWinFrameTheme.cc +++ b/src/FbWinFrameTheme.cc | |||
@@ -51,7 +51,8 @@ FbWinFrameTheme::FbWinFrameTheme(int screen_num): | |||
51 | m_title_height(*this, "window.title.height", "Window.Title.Height"), | 51 | m_title_height(*this, "window.title.height", "Window.Title.Height"), |
52 | m_bevel_width(*this, "window.bevelWidth", "Window.BevelWidth"), | 52 | m_bevel_width(*this, "window.bevelWidth", "Window.BevelWidth"), |
53 | m_handle_width(*this, "window.handleWidth", "Window.handleWidth"), | 53 | m_handle_width(*this, "window.handleWidth", "Window.handleWidth"), |
54 | m_border(*this, "window", "Window"), // for window.border* | 54 | m_border_focus(*this, "window.focus", "Window.Focus"), |
55 | m_border_unfocus(*this, "window.unfocus", "Window.Unfocus"), | ||
55 | m_button_pic_focus_gc(RootWindow(FbTk::App::instance()->display(), screen_num)), | 56 | m_button_pic_focus_gc(RootWindow(FbTk::App::instance()->display(), screen_num)), |
56 | m_button_pic_unfocus_gc(RootWindow(FbTk::App::instance()->display(), screen_num)), | 57 | m_button_pic_unfocus_gc(RootWindow(FbTk::App::instance()->display(), screen_num)), |
57 | m_focused_alpha(255), | 58 | m_focused_alpha(255), |
@@ -83,10 +84,13 @@ FbWinFrameTheme::~FbWinFrameTheme() { | |||
83 | } | 84 | } |
84 | 85 | ||
85 | bool FbWinFrameTheme::fallback(FbTk::ThemeItem_base &item) { | 86 | bool FbWinFrameTheme::fallback(FbTk::ThemeItem_base &item) { |
86 | if (item.name() == "window.borderWidth") | 87 | if (item.name() == "window.focus.borderWidth" || |
87 | return FbTk::ThemeManager::instance().loadItem(item, "borderWidth", "BorderWidth"); | 88 | item.name() == "window.unfocus.borderWidth") |
88 | else if (item.name() == "window.borderColor") | 89 | return FbTk::ThemeManager::instance().loadItem(item, "window.borderWidth", "Window.BorderWidth") || |
89 | return FbTk::ThemeManager::instance().loadItem(item, "borderColor", "BorderColor"); | 90 | FbTk::ThemeManager::instance().loadItem(item, "borderWidth", "BorderWidth"); |
91 | else if (item.name() == "window.focus.borderColor" || item.name() == "window.unfocus.borderColor") | ||
92 | return FbTk::ThemeManager::instance().loadItem(item, "window.borderColor", "Window.BorderColor") || | ||
93 | FbTk::ThemeManager::instance().loadItem(item, "borderColor", "BorderColor"); | ||
90 | else if (item.name() == "window.bevelWidth") | 94 | else if (item.name() == "window.bevelWidth") |
91 | return FbTk::ThemeManager::instance().loadItem(item, "bevelWidth", "bevelWidth"); | 95 | return FbTk::ThemeManager::instance().loadItem(item, "bevelWidth", "bevelWidth"); |
92 | else if (item.name() == "window.handleWidth") | 96 | else if (item.name() == "window.handleWidth") |
diff --git a/src/FbWinFrameTheme.hh b/src/FbWinFrameTheme.hh index a48f8b6..c68c418 100644 --- a/src/FbWinFrameTheme.hh +++ b/src/FbWinFrameTheme.hh | |||
@@ -84,7 +84,7 @@ public: | |||
84 | inline Cursor bottomSideCursor() const { return m_cursor_bottom_side; } | 84 | inline Cursor bottomSideCursor() const { return m_cursor_bottom_side; } |
85 | 85 | ||
86 | inline Shape::ShapePlace shapePlace() const { return *m_shape_place; } | 86 | inline Shape::ShapePlace shapePlace() const { return *m_shape_place; } |
87 | inline const BorderTheme &border() const { return m_border; } | 87 | inline const BorderTheme &border(bool focus) const { return (focus ? m_border_focus : m_border_unfocus); } |
88 | 88 | ||
89 | unsigned int titleHeight() const { return *m_title_height; } | 89 | unsigned int titleHeight() const { return *m_title_height; } |
90 | unsigned int bevelWidth() const { return *m_bevel_width; } | 90 | unsigned int bevelWidth() const { return *m_bevel_width; } |
@@ -109,7 +109,7 @@ private: | |||
109 | FbTk::ThemeItem<Shape::ShapePlace> m_shape_place; | 109 | FbTk::ThemeItem<Shape::ShapePlace> m_shape_place; |
110 | 110 | ||
111 | FbTk::ThemeItem<int> m_title_height, m_bevel_width, m_handle_width; | 111 | FbTk::ThemeItem<int> m_title_height, m_bevel_width, m_handle_width; |
112 | BorderTheme m_border; | 112 | BorderTheme m_border_focus, m_border_unfocus; |
113 | 113 | ||
114 | FbTk::GContext m_button_pic_focus_gc, m_button_pic_unfocus_gc; | 114 | FbTk::GContext m_button_pic_focus_gc, m_button_pic_unfocus_gc; |
115 | 115 | ||
diff --git a/src/FocusControl.cc b/src/FocusControl.cc index ae5b5e3..426c026 100644 --- a/src/FocusControl.cc +++ b/src/FocusControl.cc | |||
@@ -306,7 +306,7 @@ void FocusControl::dirFocus(FluxboxWindow &win, FocusDir dir) { | |||
306 | 306 | ||
307 | FluxboxWindow *foundwin = 0; | 307 | FluxboxWindow *foundwin = 0; |
308 | int weight = 999999, exposure = 0; // extreme values | 308 | int weight = 999999, exposure = 0; // extreme values |
309 | int borderW = m_screen.winFrameTheme().border().width(), | 309 | int borderW = win.frame().window().borderWidth(), |
310 | top = win.y() + borderW, | 310 | top = win.y() + borderW, |
311 | bottom = win.y() + win.height() + borderW, | 311 | bottom = win.y() + win.height() + borderW, |
312 | left = win.x() + borderW, | 312 | left = win.x() + borderW, |
diff --git a/src/Screen.cc b/src/Screen.cc index eab425b..4f42539 100644 --- a/src/Screen.cc +++ b/src/Screen.cc | |||
@@ -1943,8 +1943,8 @@ void BScreen::renderGeomWindow() { | |||
1943 | int geom_w = winFrameTheme().font().textWidth(label, strlen(label)) + winFrameTheme().bevelWidth()*2; | 1943 | int geom_w = winFrameTheme().font().textWidth(label, strlen(label)) + winFrameTheme().bevelWidth()*2; |
1944 | m_geom_window.resize(geom_w, geom_h); | 1944 | m_geom_window.resize(geom_w, geom_h); |
1945 | 1945 | ||
1946 | m_geom_window.setBorderWidth(winFrameTheme().border().width()); | 1946 | m_geom_window.setBorderWidth(winFrameTheme().border(true).width()); |
1947 | m_geom_window.setBorderColor(winFrameTheme().border().color()); | 1947 | m_geom_window.setBorderColor(winFrameTheme().border(true).color()); |
1948 | 1948 | ||
1949 | 1949 | ||
1950 | Pixmap tmp = geom_pixmap; | 1950 | Pixmap tmp = geom_pixmap; |
@@ -1981,8 +1981,8 @@ void BScreen::renderPosWindow() { | |||
1981 | int pos_w = winFrameTheme().font().textWidth("0:00000 x 0:00000", 17) + winFrameTheme().bevelWidth()*2; | 1981 | int pos_w = winFrameTheme().font().textWidth("0:00000 x 0:00000", 17) + winFrameTheme().bevelWidth()*2; |
1982 | m_pos_window.resize(pos_w, pos_h); | 1982 | m_pos_window.resize(pos_w, pos_h); |
1983 | 1983 | ||
1984 | m_pos_window.setBorderWidth(winFrameTheme().border().width()); | 1984 | m_pos_window.setBorderWidth(winFrameTheme().border(true).width()); |
1985 | m_pos_window.setBorderColor(winFrameTheme().border().color()); | 1985 | m_pos_window.setBorderColor(winFrameTheme().border(true).color()); |
1986 | 1986 | ||
1987 | 1987 | ||
1988 | Pixmap tmp = pos_pixmap; | 1988 | Pixmap tmp = pos_pixmap; |
diff --git a/src/Window.cc b/src/Window.cc index 54f6915..9b3c3ce 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -2981,7 +2981,7 @@ void FluxboxWindow::applyDecorations(bool initial) { | |||
2981 | 2981 | ||
2982 | unsigned int border_width = 0; | 2982 | unsigned int border_width = 0; |
2983 | if (decorations.border) | 2983 | if (decorations.border) |
2984 | border_width = frame().theme().border().width(); | 2984 | border_width = frame().theme().border(m_focused).width(); |
2985 | 2985 | ||
2986 | bool client_move = false; | 2986 | bool client_move = false; |
2987 | 2987 | ||
@@ -4032,7 +4032,7 @@ void FluxboxWindow::updateButtons() { | |||
4032 | void FluxboxWindow::reconfigTheme() { | 4032 | void FluxboxWindow::reconfigTheme() { |
4033 | 4033 | ||
4034 | m_frame.setBorderWidth(decorations.border ? | 4034 | m_frame.setBorderWidth(decorations.border ? |
4035 | frame().theme().border().width() : 0); | 4035 | frame().theme().border(m_focused).width() : 0); |
4036 | if (decorations.handle && frame().theme().handleWidth() != 0) | 4036 | if (decorations.handle && frame().theme().handleWidth() != 0) |
4037 | frame().showHandle(); | 4037 | frame().showHandle(); |
4038 | else | 4038 | else |