diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/FbWinFrame.cc | 68 | ||||
-rw-r--r-- | src/FbWinFrame.hh | 2 | ||||
-rw-r--r-- | src/FbWinFrameTheme.cc | 1 | ||||
-rw-r--r-- | src/FbWinFrameTheme.hh | 3 | ||||
-rw-r--r-- | src/IconButton.cc | 46 | ||||
-rw-r--r-- | src/IconButton.hh | 3 | ||||
-rw-r--r-- | src/IconbarTheme.cc | 28 | ||||
-rw-r--r-- | src/IconbarTool.cc | 72 | ||||
-rw-r--r-- | src/IconbarTool.hh | 4 |
9 files changed, 80 insertions, 147 deletions
diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc index cbfd0f8..bf1ab42 100644 --- a/src/FbWinFrame.cc +++ b/src/FbWinFrame.cc | |||
@@ -522,12 +522,8 @@ void FbWinFrame::setFocus(bool newvalue) { | |||
522 | } | 522 | } |
523 | } | 523 | } |
524 | 524 | ||
525 | if (currentLabel()) { | 525 | if (currentLabel()) |
526 | if (newvalue) // focused | 526 | m_current_label->reconfigTheme(); |
527 | applyFocusLabel(*m_current_label); | ||
528 | else // unfocused | ||
529 | applyUnfocusLabel(*m_current_label); | ||
530 | } | ||
531 | 527 | ||
532 | applyAll(); | 528 | applyAll(); |
533 | clearAll(); | 529 | clearAll(); |
@@ -630,7 +626,7 @@ IconButton *FbWinFrame::createTab(Focusable &client) { | |||
630 | EnterWindowMask); | 626 | EnterWindowMask); |
631 | FbTk::EventManager::instance()->add(*button, button->window()); | 627 | FbTk::EventManager::instance()->add(*button, button->window()); |
632 | 628 | ||
633 | button->setJustify(theme().justify()); | 629 | button->setJustify(theme().iconbarTheme().unfocusedText().justify()); |
634 | button->setBorderColor(theme().border().color()); | 630 | button->setBorderColor(theme().border().color()); |
635 | button->setBorderWidth(m_window.borderWidth()); | 631 | button->setBorderWidth(m_window.borderWidth()); |
636 | 632 | ||
@@ -698,26 +694,18 @@ void FbWinFrame::setLabelButtonFocus(IconButton &btn) { | |||
698 | 694 | ||
699 | // render label buttons | 695 | // render label buttons |
700 | if (currentLabel() != 0) | 696 | if (currentLabel() != 0) |
701 | applyUnfocusLabel(*m_current_label); | 697 | m_current_label->reconfigTheme(); |
702 | 698 | ||
703 | m_current_label = &btn; // current focused button | 699 | m_current_label = &btn; // current focused button |
704 | m_label.setText(btn.text()); | 700 | m_label.setText(btn.text()); |
705 | 701 | btn.reconfigTheme(); | |
706 | if (m_focused) | ||
707 | applyFocusLabel(*m_current_label); | ||
708 | else | ||
709 | applyUnfocusLabel(*m_current_label); | ||
710 | } | 702 | } |
711 | 703 | ||
712 | void FbWinFrame::setLabelButtonFocus(IconButton &btn, bool value) { | 704 | void FbWinFrame::setLabelButtonFocus(IconButton &btn, bool value) { |
713 | if (btn.parent() != &m_tab_container) | 705 | if (btn.parent() != &m_tab_container) |
714 | return; | 706 | return; |
715 | 707 | ||
716 | if (value) | 708 | btn.reconfigTheme(); |
717 | applyFocusLabel(btn); | ||
718 | else | ||
719 | applyUnfocusLabel(btn); | ||
720 | |||
721 | btn.clear(); | 709 | btn.clear(); |
722 | } | 710 | } |
723 | 711 | ||
@@ -1326,8 +1314,12 @@ void FbWinFrame::applyTitlebar() { | |||
1326 | m_label.setAlpha(alpha); | 1314 | m_label.setAlpha(alpha); |
1327 | 1315 | ||
1328 | if (m_tabmode != INTERNAL) { | 1316 | if (m_tabmode != INTERNAL) { |
1329 | m_label.setGC(m_focused?theme().iconbarTheme().focusedText().textGC():theme().iconbarTheme().unfocusedText().textGC()); | 1317 | m_label.setGC(m_focused ? |
1330 | m_label.setJustify(theme().justify()); | 1318 | theme().iconbarTheme().focusedText().textGC() : |
1319 | theme().iconbarTheme().unfocusedText().textGC()); | ||
1320 | m_label.setJustify(m_focused ? | ||
1321 | theme().iconbarTheme().focusedText().justify() : | ||
1322 | theme().iconbarTheme().unfocusedText().justify()); | ||
1331 | 1323 | ||
1332 | if (label_pm != 0) | 1324 | if (label_pm != 0) |
1333 | m_label.setBackgroundPixmap(label_pm); | 1325 | m_label.setBackgroundPixmap(label_pm); |
@@ -1579,10 +1571,7 @@ void FbWinFrame::applyTabContainer() { | |||
1579 | Container::ItemList::iterator btn_it_end = m_tab_container.end(); | 1571 | Container::ItemList::iterator btn_it_end = m_tab_container.end(); |
1580 | for (; btn_it != btn_it_end; ++btn_it) { | 1572 | for (; btn_it != btn_it_end; ++btn_it) { |
1581 | IconButton *btn = static_cast<IconButton *>(*btn_it); | 1573 | IconButton *btn = static_cast<IconButton *>(*btn_it); |
1582 | if (btn == m_current_label && m_focused) | 1574 | btn->reconfigTheme(); |
1583 | applyFocusLabel(*btn); | ||
1584 | else | ||
1585 | applyUnfocusLabel(*btn); | ||
1586 | } | 1575 | } |
1587 | } | 1576 | } |
1588 | 1577 | ||
@@ -1618,15 +1607,6 @@ void FbWinFrame::setBorderWidth(unsigned int border_width) { | |||
1618 | gripRight().setBorderWidth(border_width); | 1607 | gripRight().setBorderWidth(border_width); |
1619 | gripRight().setBorderColor(theme().border().color()); | 1608 | gripRight().setBorderColor(theme().border().color()); |
1620 | 1609 | ||
1621 | // and the labelbuttons | ||
1622 | Container::ItemList::iterator btn_it = m_tab_container.begin(); | ||
1623 | Container::ItemList::iterator btn_it_end = m_tab_container.end(); | ||
1624 | for (; btn_it != btn_it_end; ++btn_it) { | ||
1625 | (*btn_it)->setBorderWidth(border_width); | ||
1626 | (*btn_it)->setBorderColor(theme().border().color()); | ||
1627 | } | ||
1628 | m_tab_container.update(); | ||
1629 | |||
1630 | if (bw_changes != 0) | 1610 | if (bw_changes != 0) |
1631 | resize(width(), height() + bw_changes); | 1611 | resize(width(), height() + bw_changes); |
1632 | 1612 | ||
@@ -1640,28 +1620,6 @@ void FbWinFrame::setBorderWidth(unsigned int border_width) { | |||
1640 | 1620 | ||
1641 | } | 1621 | } |
1642 | 1622 | ||
1643 | void FbWinFrame::applyFocusLabel(IconButton &button) { | ||
1644 | |||
1645 | button.setGC(theme().iconbarTheme().focusedText().textGC()); | ||
1646 | button.setFont(theme().iconbarTheme().focusedText().font()); | ||
1647 | button.setJustify(theme().justify()); | ||
1648 | button.setAlpha(getAlpha(m_focused)); | ||
1649 | button.renderTextures(); | ||
1650 | button.updateBackground(); | ||
1651 | |||
1652 | } | ||
1653 | |||
1654 | void FbWinFrame::applyUnfocusLabel(IconButton &button) { | ||
1655 | |||
1656 | button.setGC(theme().iconbarTheme().unfocusedText().textGC()); | ||
1657 | button.setFont(theme().iconbarTheme().unfocusedText().font()); | ||
1658 | button.setJustify(theme().justify()); | ||
1659 | button.setAlpha(getAlpha(m_focused)); | ||
1660 | button.renderTextures(); | ||
1661 | button.updateBackground(); | ||
1662 | |||
1663 | } | ||
1664 | |||
1665 | // this function translates its arguments according to win_gravity | 1623 | // this function translates its arguments according to win_gravity |
1666 | // if win_gravity is negative, it does an inverse translation | 1624 | // if win_gravity is negative, it does an inverse translation |
1667 | // This function should be used when a window is mapped/unmapped/pos configured | 1625 | // This function should be used when a window is mapped/unmapped/pos configured |
diff --git a/src/FbWinFrame.hh b/src/FbWinFrame.hh index 503317a..35e4bd8 100644 --- a/src/FbWinFrame.hh +++ b/src/FbWinFrame.hh | |||
@@ -279,8 +279,6 @@ private: | |||
279 | void applyTitlebar(); | 279 | void applyTitlebar(); |
280 | void applyHandles(); | 280 | void applyHandles(); |
281 | void applyTabContainer(); // and label buttons | 281 | void applyTabContainer(); // and label buttons |
282 | void applyFocusLabel(IconButton &button); | ||
283 | void applyUnfocusLabel(IconButton &button); | ||
284 | void applyButtons(); // only called within applyTitlebar | 282 | void applyButtons(); // only called within applyTitlebar |
285 | 283 | ||
286 | void getCurrentFocusPixmap(Pixmap &label_pm, Pixmap &title_pm, | 284 | void getCurrentFocusPixmap(Pixmap &label_pm, Pixmap &title_pm, |
diff --git a/src/FbWinFrameTheme.cc b/src/FbWinFrameTheme.cc index 949beaa..6f7f9ef 100644 --- a/src/FbWinFrameTheme.cc +++ b/src/FbWinFrameTheme.cc | |||
@@ -47,7 +47,6 @@ FbWinFrameTheme::FbWinFrameTheme(int screen_num): | |||
47 | m_button_unfocus_color(*this, "window.button.unfocus.picColor", "Window.Button.Unfocus.PicColor"), | 47 | m_button_unfocus_color(*this, "window.button.unfocus.picColor", "Window.Button.Unfocus.PicColor"), |
48 | 48 | ||
49 | m_font(*this, "window.font", "Window.Font"), | 49 | m_font(*this, "window.font", "Window.Font"), |
50 | m_textjustify(*this, "window.justify", "Window.Justify"), | ||
51 | m_shape_place(*this, "window.roundCorners", "Window.RoundCorners"), | 50 | m_shape_place(*this, "window.roundCorners", "Window.RoundCorners"), |
52 | m_title_height(*this, "window.title.height", "Window.Title.Height"), | 51 | m_title_height(*this, "window.title.height", "Window.Title.Height"), |
53 | m_bevel_width(*this, "window.bevelWidth", "Window.BevelWidth"), | 52 | m_bevel_width(*this, "window.bevelWidth", "Window.BevelWidth"), |
diff --git a/src/FbWinFrameTheme.hh b/src/FbWinFrameTheme.hh index 526bd3b..04d6ee4 100644 --- a/src/FbWinFrameTheme.hh +++ b/src/FbWinFrameTheme.hh | |||
@@ -67,8 +67,6 @@ public: | |||
67 | //@} | 67 | //@} |
68 | FbTk::Font &font() { return *m_font; } | 68 | FbTk::Font &font() { return *m_font; } |
69 | 69 | ||
70 | FbTk::Justify justify() const { return *m_textjustify; } | ||
71 | |||
72 | GC buttonPicFocusGC() const { return m_button_pic_focus_gc.gc(); } | 70 | GC buttonPicFocusGC() const { return m_button_pic_focus_gc.gc(); } |
73 | GC buttonPicUnfocusGC() const { return m_button_pic_unfocus_gc.gc(); } | 71 | GC buttonPicUnfocusGC() const { return m_button_pic_unfocus_gc.gc(); } |
74 | 72 | ||
@@ -104,7 +102,6 @@ private: | |||
104 | FbTk::ThemeItem<FbTk::Color> m_button_focus_color, m_button_unfocus_color; | 102 | FbTk::ThemeItem<FbTk::Color> m_button_focus_color, m_button_unfocus_color; |
105 | 103 | ||
106 | FbTk::ThemeItem<FbTk::Font> m_font; | 104 | FbTk::ThemeItem<FbTk::Font> m_font; |
107 | FbTk::ThemeItem<FbTk::Justify> m_textjustify; | ||
108 | FbTk::ThemeItem<Shape::ShapePlace> m_shape_place; | 105 | FbTk::ThemeItem<Shape::ShapePlace> m_shape_place; |
109 | 106 | ||
110 | FbTk::ThemeItem<int> m_title_height, m_bevel_width, m_handle_width; | 107 | FbTk::ThemeItem<int> m_title_height, m_bevel_width, m_handle_width; |
diff --git a/src/IconButton.cc b/src/IconButton.cc index 8830b93..5cb47d1 100644 --- a/src/IconButton.cc +++ b/src/IconButton.cc | |||
@@ -115,22 +115,7 @@ void IconButton::setPixmap(bool use) { | |||
115 | } | 115 | } |
116 | } | 116 | } |
117 | 117 | ||
118 | void IconButton::updateBackground() { | 118 | void IconButton::reconfigTheme() { |
119 | // TODO: this ignores attention state, which isn't in Focusable.hh yet | ||
120 | if (m_win.isFocused()) { | ||
121 | if (m_focused_pm != 0) | ||
122 | setBackgroundPixmap(m_focused_pm); | ||
123 | else | ||
124 | setBackgroundColor(m_theme.focusedTexture().color()); | ||
125 | } else { | ||
126 | if (m_unfocused_pm != 0) | ||
127 | setBackgroundPixmap(m_unfocused_pm); | ||
128 | else | ||
129 | setBackgroundColor(m_theme.unfocusedTexture().color()); | ||
130 | } | ||
131 | } | ||
132 | |||
133 | void IconButton::renderTextures() { | ||
134 | 119 | ||
135 | if (m_theme.focusedTexture().usePixmap()) | 120 | if (m_theme.focusedTexture().usePixmap()) |
136 | m_focused_pm.reset(m_win.screen().imageControl().renderImage( | 121 | m_focused_pm.reset(m_win.screen().imageControl().renderImage( |
@@ -146,6 +131,35 @@ void IconButton::renderTextures() { | |||
146 | else | 131 | else |
147 | m_unfocused_pm.reset( 0 ); | 132 | m_unfocused_pm.reset( 0 ); |
148 | 133 | ||
134 | setAlpha(parent()->alpha()); | ||
135 | |||
136 | // TODO: this ignores attention state, which isn't in Focusable.hh yet | ||
137 | if (m_win.isFocused()) { | ||
138 | if (m_focused_pm != 0) | ||
139 | setBackgroundPixmap(m_focused_pm); | ||
140 | else | ||
141 | setBackgroundColor(m_theme.focusedTexture().color()); | ||
142 | |||
143 | setGC(m_theme.focusedText().textGC()); | ||
144 | setFont(m_theme.focusedText().font()); | ||
145 | setJustify(m_theme.focusedText().justify()); | ||
146 | setBorderWidth(m_theme.focusedBorder().width()); | ||
147 | setBorderColor(m_theme.focusedBorder().color()); | ||
148 | |||
149 | } else { | ||
150 | if (m_unfocused_pm != 0) | ||
151 | setBackgroundPixmap(m_unfocused_pm); | ||
152 | else | ||
153 | setBackgroundColor(m_theme.unfocusedTexture().color()); | ||
154 | |||
155 | setGC(m_theme.unfocusedText().textGC()); | ||
156 | setFont(m_theme.unfocusedText().font()); | ||
157 | setJustify(m_theme.unfocusedText().justify()); | ||
158 | setBorderWidth(m_theme.unfocusedBorder().width()); | ||
159 | setBorderColor(m_theme.unfocusedBorder().color()); | ||
160 | |||
161 | } | ||
162 | |||
149 | } | 163 | } |
150 | 164 | ||
151 | void IconButton::update(FbTk::Subject *subj) { | 165 | void IconButton::update(FbTk::Subject *subj) { |
diff --git a/src/IconButton.hh b/src/IconButton.hh index 2c48bff..dc8203b 100644 --- a/src/IconButton.hh +++ b/src/IconButton.hh | |||
@@ -48,8 +48,7 @@ public: | |||
48 | unsigned int width, unsigned int height); | 48 | unsigned int width, unsigned int height); |
49 | void resize(unsigned int width, unsigned int height); | 49 | void resize(unsigned int width, unsigned int height); |
50 | 50 | ||
51 | void renderTextures(); | 51 | void reconfigTheme(); |
52 | void updateBackground(); | ||
53 | 52 | ||
54 | void update(FbTk::Subject *subj); | 53 | void update(FbTk::Subject *subj); |
55 | void setPixmap(bool use); | 54 | void setPixmap(bool use); |
diff --git a/src/IconbarTheme.cc b/src/IconbarTheme.cc index 1f25ac3..2ee8360 100644 --- a/src/IconbarTheme.cc +++ b/src/IconbarTheme.cc | |||
@@ -63,22 +63,30 @@ bool IconbarTheme::fallback(FbTk::ThemeItem_base &item) { | |||
63 | tm.loadItem(item, "toolbar.windowLabel", "toolbar.windowLabel")); | 63 | tm.loadItem(item, "toolbar.windowLabel", "toolbar.windowLabel")); |
64 | 64 | ||
65 | } else if (&m_unfocused_texture == &item) { | 65 | } else if (&m_unfocused_texture == &item) { |
66 | return (tm.loadItem(item, "window.label.unfocus", "Window.Label.Unfocus") || | 66 | return (tm.loadItem(item, "window.label.unfocus", |
67 | tm.loadItem(item, "toolbar.windowLabel", "toolbar.windowLabel")); | 67 | "Window.Label.Unfocus") || |
68 | tm.loadItem(item, "toolbar.windowLabel", | ||
69 | "toolbar.windowLabel")); | ||
68 | } else if (&m_empty_texture == &item) { | 70 | } else if (&m_empty_texture == &item) { |
69 | return (tm.loadItem(item, m_focused_texture.name(), m_focused_texture.altName()) || | 71 | return (tm.loadItem(item, m_focused_texture.name(), |
70 | tm.loadItem(item, "toolbar.windowLabel", "toolbar.windowLabel") || | 72 | m_focused_texture.altName()) || |
71 | tm.loadItem(item, "toolbar", "toolbar") | 73 | tm.loadItem(item, "toolbar.windowLabel", "toolbar.windowLabel") |
72 | ); | 74 | || tm.loadItem(item, "toolbar", "toolbar")); |
73 | } else if (item.name() == m_name + ".focused.borderWidth" || | 75 | } else if (item.name() == m_name + ".focused.borderWidth" || |
74 | item.name() == m_name + ".unfocused.borderWidth") | 76 | item.name() == m_name + ".unfocused.borderWidth") |
75 | // don't fallback for base border, for theme backwards compatibility | 77 | // don't fallback for base border, for theme backwards compatibility |
76 | return tm.loadItem(item, "borderWidth", "BorderWidth"); | 78 | return (tm.loadItem(item, m_name + ".borderWidth", |
79 | m_altname + ".BorderWidth") || | ||
80 | tm.loadItem(item, "window.borderWidth", "Window.BorderWidth") || | ||
81 | tm.loadItem(item, "borderWidth", "BorderWidth")); | ||
77 | 82 | ||
78 | else if (item.name() == m_name + ".focused.borderColor" || | 83 | else if (item.name() == m_name + ".focused.borderColor" || |
79 | item.name() == m_name + ".unfocused.borderColor") | 84 | item.name() == m_name + ".unfocused.borderColor") |
80 | 85 | ||
81 | return tm.loadItem(item, "borderColor", "BorderColor"); | 86 | return (tm.loadItem(item, m_name + ".borderColor", |
87 | m_altname + ".BorderColor") || | ||
88 | tm.loadItem(item, "window.borderColor", "Window.BorderColor") || | ||
89 | tm.loadItem(item, "borderColor", "BorderColor")); | ||
82 | 90 | ||
83 | else if (item.name() == m_name + ".focused.font" || | 91 | else if (item.name() == m_name + ".focused.font" || |
84 | item.name() == m_name + ".unfocused.font") | 92 | item.name() == m_name + ".unfocused.font") |
@@ -91,6 +99,10 @@ bool IconbarTheme::fallback(FbTk::ThemeItem_base &item) { | |||
91 | 99 | ||
92 | } else if (item.name() == m_name + ".unfocused.textColor") { | 100 | } else if (item.name() == m_name + ".unfocused.textColor") { |
93 | return tm.loadItem(item, "window.label.unfocus.textColor", "Window.Label.Unfocus.TextColor"); | 101 | return tm.loadItem(item, "window.label.unfocus.textColor", "Window.Label.Unfocus.TextColor"); |
102 | } else if (item.name() == m_name + ".focused.justify" || | ||
103 | item.name() == m_name + ".unfocused.justify") { | ||
104 | return (tm.loadItem(item, m_name + ".justify", m_altname + ".Justify") | ||
105 | || tm.loadItem(item, "window.justify", "Window.Justify")); | ||
94 | } | 106 | } |
95 | 107 | ||
96 | return false; | 108 | return false; |
diff --git a/src/IconbarTool.cc b/src/IconbarTool.cc index ef99c9a..4ba3a44 100644 --- a/src/IconbarTool.cc +++ b/src/IconbarTool.cc | |||
@@ -582,10 +582,8 @@ void IconbarTool::update(FbTk::Subject *subj) { | |||
582 | } else if (subj == &(winsubj->win().attentionSig())) { | 582 | } else if (subj == &(winsubj->win().attentionSig())) { |
583 | // render with titlebar focus, on attention | 583 | // render with titlebar focus, on attention |
584 | IconButton *button = findButton(winsubj->win()); | 584 | IconButton *button = findButton(winsubj->win()); |
585 | if (button) { | 585 | if (button) |
586 | renderButton(*button, true, | 586 | renderButton(*button, true); |
587 | winsubj->win().getAttentionState()); | ||
588 | } | ||
589 | return; | 587 | return; |
590 | } else { | 588 | } else { |
591 | // signal not handled | 589 | // signal not handled |
@@ -657,12 +655,8 @@ void IconbarTool::updateSizing() { | |||
657 | 655 | ||
658 | IconList::iterator icon_it = m_icon_list.begin(); | 656 | IconList::iterator icon_it = m_icon_list.begin(); |
659 | const IconList::iterator icon_it_end = m_icon_list.end(); | 657 | const IconList::iterator icon_it_end = m_icon_list.end(); |
660 | for (; icon_it != icon_it_end; ++icon_it) { | 658 | for (; icon_it != icon_it_end; ++icon_it) |
661 | if ((*icon_it)->win().isFocused()) | 659 | (*icon_it)->reconfigTheme(); |
662 | (*icon_it)->setBorderWidth(m_theme.focusedBorder().width()); | ||
663 | else // unfocused | ||
664 | (*icon_it)->setBorderWidth(m_theme.unfocusedBorder().width()); | ||
665 | } | ||
666 | 660 | ||
667 | } | 661 | } |
668 | 662 | ||
@@ -677,79 +671,43 @@ void IconbarTool::renderTheme() { | |||
677 | // update button sizes before we get max width per client! | 671 | // update button sizes before we get max width per client! |
678 | updateSizing(); | 672 | updateSizing(); |
679 | 673 | ||
680 | unsigned int icon_width = 0, icon_height = 0; | ||
681 | unsigned int icon_width_off=0, icon_height_off=0; | ||
682 | |||
683 | if (orientation() == FbTk::ROT0 || orientation() == FbTk::ROT180) { | ||
684 | icon_width = m_icon_container.maxWidthPerClient(); | ||
685 | icon_height = m_icon_container.height(); | ||
686 | icon_width_off = 1; | ||
687 | } else { | ||
688 | icon_width = m_icon_container.width(); | ||
689 | icon_height = m_icon_container.maxWidthPerClient(); | ||
690 | icon_height_off = 1; | ||
691 | } | ||
692 | |||
693 | // if we dont have any icons then we should render empty texture | 674 | // if we dont have any icons then we should render empty texture |
694 | if (!m_theme.emptyTexture().usePixmap()) { | 675 | if (!m_theme.emptyTexture().usePixmap()) { |
695 | m_empty_pm.reset( 0 ); | 676 | m_empty_pm.reset( 0 ); |
696 | m_icon_container.setBackgroundColor(m_theme.emptyTexture().color()); | 677 | m_icon_container.setBackgroundColor(m_theme.emptyTexture().color()); |
697 | } else { | 678 | } else { |
698 | m_empty_pm.reset( m_screen.imageControl(). | 679 | m_empty_pm.reset(m_screen.imageControl(). |
699 | renderImage(m_icon_container.width(), m_icon_container.height(), | 680 | renderImage(m_icon_container.width(), |
700 | m_theme.emptyTexture(), orientation()) ); | 681 | m_icon_container.height(), |
682 | m_theme.emptyTexture(), orientation())); | ||
701 | m_icon_container.setBackgroundPixmap(m_empty_pm); | 683 | m_icon_container.setBackgroundPixmap(m_empty_pm); |
702 | } | 684 | } |
703 | 685 | ||
704 | // set to zero so its consistent and not ugly | ||
705 | m_icon_container.setBorderWidth(m_theme.border().width()); | ||
706 | m_icon_container.setBorderColor(m_theme.border().color()); | ||
707 | m_icon_container.setAlpha(m_alpha); | 686 | m_icon_container.setAlpha(m_alpha); |
708 | 687 | ||
709 | // update buttons | 688 | // update buttons |
710 | IconList::iterator icon_it = m_icon_list.begin(); | 689 | IconList::iterator icon_it = m_icon_list.begin(); |
711 | const IconList::iterator icon_it_end = m_icon_list.end(); | 690 | const IconList::iterator icon_it_end = m_icon_list.end(); |
712 | for (; icon_it != icon_it_end; ++icon_it) { | 691 | for (; icon_it != icon_it_end; ++icon_it) |
713 | renderButton(*(*icon_it)); | 692 | renderButton(*(*icon_it)); |
714 | } | 693 | |
715 | } | 694 | } |
716 | 695 | ||
717 | void IconbarTool::renderButton(IconButton &button, bool clear, | 696 | void IconbarTool::renderButton(IconButton &button, bool clear) { |
718 | int focusOption) { | ||
719 | 697 | ||
720 | button.renderTextures(); | ||
721 | button.setPixmap(*m_rc_use_pixmap); | 698 | button.setPixmap(*m_rc_use_pixmap); |
722 | button.setAlpha(m_alpha); | ||
723 | button.setTextPadding(*m_rc_client_padding); | 699 | button.setTextPadding(*m_rc_client_padding); |
724 | 700 | ||
725 | if (focusOption == 1 || | 701 | if (button.win().isFocused()) { |
726 | (focusOption == -1 && | ||
727 | button.win().isFocused())) { | ||
728 | 702 | ||
729 | // focused texture | 703 | // focused texture |
730 | if (button.win().isFocused()) | 704 | if (button.win().isFocused()) |
731 | m_icon_container.setSelected(m_icon_container.find(&button)); | 705 | m_icon_container.setSelected(m_icon_container.find(&button)); |
732 | 706 | ||
733 | button.setGC(m_theme.focusedText().textGC()); | 707 | } else if (m_icon_container.selected() == &button) |
734 | button.setFont(m_theme.focusedText().font()); | 708 | m_icon_container.setSelected(-1); |
735 | button.setJustify(m_theme.focusedText().justify()); | ||
736 | button.setBorderWidth(m_theme.focusedBorder().width()); | ||
737 | button.setBorderColor(m_theme.focusedBorder().color()); | ||
738 | button.updateBackground(); | ||
739 | |||
740 | } else { // unfocused | ||
741 | if (m_icon_container.selected() == &button) | ||
742 | m_icon_container.setSelected(-1); | ||
743 | |||
744 | button.setGC(m_theme.unfocusedText().textGC()); | ||
745 | button.setFont(m_theme.unfocusedText().font()); | ||
746 | button.setJustify(m_theme.unfocusedText().justify()); | ||
747 | button.setBorderWidth(m_theme.unfocusedBorder().width()); | ||
748 | button.setBorderColor(m_theme.unfocusedBorder().color()); | ||
749 | button.updateBackground(); | ||
750 | |||
751 | } | ||
752 | 709 | ||
710 | button.reconfigTheme(); | ||
753 | if (clear) | 711 | if (clear) |
754 | button.clear(); // the clear also updates transparent | 712 | button.clear(); // the clear also updates transparent |
755 | } | 713 | } |
diff --git a/src/IconbarTool.hh b/src/IconbarTool.hh index d7a9c09..d218b91 100644 --- a/src/IconbarTool.hh +++ b/src/IconbarTool.hh | |||
@@ -100,9 +100,7 @@ private: | |||
100 | /// render single button, and probably apply changes (clear) | 100 | /// render single button, and probably apply changes (clear) |
101 | /// @param button the button to render | 101 | /// @param button the button to render |
102 | /// @param clear if the window should be cleared first | 102 | /// @param clear if the window should be cleared first |
103 | /// @param focusOption -1 = use window focus, 0 = render no focus, 1 = render focus | 103 | void renderButton(IconButton &button, bool clear = true); |
104 | void renderButton(IconButton &button, bool clear = true, | ||
105 | int focusOption = -1); | ||
106 | /// render all buttons | 104 | /// render all buttons |
107 | void renderTheme(); | 105 | void renderTheme(); |
108 | void renderTheme(unsigned char alpha); | 106 | void renderTheme(unsigned char alpha); |