aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/FbWinFrame.cc68
-rw-r--r--src/FbWinFrame.hh2
-rw-r--r--src/FbWinFrameTheme.cc1
-rw-r--r--src/FbWinFrameTheme.hh3
-rw-r--r--src/IconButton.cc46
-rw-r--r--src/IconButton.hh3
-rw-r--r--src/IconbarTheme.cc28
-rw-r--r--src/IconbarTool.cc72
-rw-r--r--src/IconbarTool.hh4
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
712void FbWinFrame::setLabelButtonFocus(IconButton &btn, bool value) { 704void 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
1643void 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
1654void 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
118void IconButton::updateBackground() { 118void 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
133void 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
151void IconButton::update(FbTk::Subject *subj) { 165void 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
717void IconbarTool::renderButton(IconButton &button, bool clear, 696void 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);