aboutsummaryrefslogtreecommitdiff
path: root/src/FbWinFrame.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/FbWinFrame.cc')
-rw-r--r--src/FbWinFrame.cc62
1 files changed, 23 insertions, 39 deletions
diff --git a/src/FbWinFrame.cc b/src/FbWinFrame.cc
index e96b72f..a0de468 100644
--- a/src/FbWinFrame.cc
+++ b/src/FbWinFrame.cc
@@ -87,7 +87,6 @@ FbWinFrame::FbWinFrame(BScreen &screen, FbWinFrameTheme &theme, FbTk::ImageContr
87 m_use_handle(true), 87 m_use_handle(true),
88 m_focused(false), 88 m_focused(false),
89 m_visible(false), 89 m_visible(false),
90 m_use_default_alpha(2),
91 m_button_pm(0), 90 m_button_pm(0),
92 m_tabmode(screen.getDefaultInternalTabs()?INTERNAL:EXTERNAL), 91 m_tabmode(screen.getDefaultInternalTabs()?INTERNAL:EXTERNAL),
93 m_active_gravity(0), 92 m_active_gravity(0),
@@ -96,8 +95,8 @@ FbWinFrame::FbWinFrame(BScreen &screen, FbWinFrameTheme &theme, FbTk::ImageContr
96 m_button_size(1), 95 m_button_size(1),
97 m_height_before_shade(1), 96 m_height_before_shade(1),
98 m_shaded(false), 97 m_shaded(false),
99 m_focused_alpha(0), 98 m_focused_alpha(theme, &FbWinFrameTheme::focusedAlpha),
100 m_unfocused_alpha(0), 99 m_unfocused_alpha(theme, &FbWinFrameTheme::unfocusedAlpha),
101 m_themelistener(*this), 100 m_themelistener(*this),
102 m_shape(m_window, theme.shapePlace()), 101 m_shape(m_window, theme.shapePlace()),
103 m_disable_themeshape(false) { 102 m_disable_themeshape(false) {
@@ -509,50 +508,19 @@ void FbWinFrame::setFocus(bool newvalue) {
509} 508}
510 509
511void FbWinFrame::setAlpha(bool focused, unsigned char alpha) { 510void FbWinFrame::setAlpha(bool focused, unsigned char alpha) {
512 if (m_use_default_alpha == 2) {
513 /// Set basic defaults
514 m_focused_alpha = getAlpha(true);
515 m_unfocused_alpha = getAlpha(false);
516 }
517 m_use_default_alpha = 0;
518
519 if (focused) 511 if (focused)
520 m_focused_alpha = alpha; 512 m_focused_alpha = alpha;
521 else 513 else
522 m_unfocused_alpha = alpha; 514 m_unfocused_alpha = alpha;
523 515
524 if (m_focused == focused) { 516 if (m_focused == focused)
525 if (FbTk::Transparent::haveComposite()) 517 applyAlpha();
526 m_window.setOpaque(alpha);
527 else {
528 // don't need to setAlpha, since apply updates them anyway
529 applyAll();
530 clearAll();
531 }
532 }
533} 518}
534 519
535unsigned char FbWinFrame::getAlpha(bool focused) const 520void FbWinFrame::applyAlpha() {
536{ 521 unsigned char alpha = getAlpha(m_focused);
537 return getUseDefaultAlpha() ?
538 (focused ? theme().focusedAlpha() : theme().unfocusedAlpha())
539 : (focused ? m_focused_alpha : m_unfocused_alpha);
540}
541
542void FbWinFrame::setUseDefaultAlpha(bool default_alpha)
543{
544 if (getUseDefaultAlpha() == default_alpha)
545 return;
546
547 if (!default_alpha && m_use_default_alpha == 2) {
548 m_focused_alpha = theme().focusedAlpha();
549 m_unfocused_alpha = theme().unfocusedAlpha();
550 }
551
552 m_use_default_alpha = default_alpha;
553
554 if (FbTk::Transparent::haveComposite()) 522 if (FbTk::Transparent::haveComposite())
555 m_window.setOpaque(getAlpha(m_focused)); 523 m_window.setOpaque(alpha);
556 else { 524 else {
557 // don't need to setAlpha, since apply updates them anyway 525 // don't need to setAlpha, since apply updates them anyway
558 applyAll(); 526 applyAll();
@@ -560,6 +528,22 @@ void FbWinFrame::setUseDefaultAlpha(bool default_alpha)
560 } 528 }
561} 529}
562 530
531unsigned char FbWinFrame::getAlpha(bool focused) const {
532 return focused ? m_focused_alpha : m_unfocused_alpha;
533}
534
535void FbWinFrame::setDefaultAlpha() {
536 if (getUseDefaultAlpha())
537 return;
538 m_focused_alpha.restoreDefault();
539 m_unfocused_alpha.restoreDefault();
540 applyAlpha();
541}
542
543bool FbWinFrame::getUseDefaultAlpha() const {
544 return m_focused_alpha.isDefault() && m_unfocused_alpha.isDefault();
545}
546
563void FbWinFrame::addLeftButton(FbTk::Button *btn) { 547void FbWinFrame::addLeftButton(FbTk::Button *btn) {
564 if (btn == 0) // valid button? 548 if (btn == 0) // valid button?
565 return; 549 return;