From f51f1c775f3f09cf184ead323d111985c888d52e Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 8 Feb 2003 08:13:02 +0000 Subject: [PATCH] stacked cycling menu works now. add a highlighted flag to otk widgets --- otk/button.cc | 13 ++++--------- otk/button.hh | 4 ---- otk/label.cc | 19 ++++++++++++++++--- otk/label.hh | 5 +++++ scripts/stackedcycle.py | 8 ++++---- 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/otk/button.cc b/otk/button.cc index 8d63ed0c..1e128784 100644 --- a/otk/button.cc +++ b/otk/button.cc @@ -9,8 +9,10 @@ namespace otk { Button::Button(Widget *parent) - : Label(parent), _default(false), _pressed(false) + : Label(parent), + _pressed(false) { + setHighlighted(false); setHorizontalJustify(RenderStyle::CenterJustify); setVerticalJustify(RenderStyle::CenterJustify); styleChanged(*RenderStyle::style(screen())); @@ -53,16 +55,9 @@ void Button::buttonReleaseHandler(const XButtonEvent &e) release(e.button); } -void Button::setDefault(bool d) -{ - _default = d; - styleChanged(*RenderStyle::style(screen())); - refresh(); -} - void Button::styleChanged(const RenderStyle &style) { - if (_default) { + if (isHighlighted()) { if (_pressed) _texture = style.buttonPressFocusBackground(); else diff --git a/otk/button.hh b/otk/button.hh index 53d08a86..09fc0d6b 100644 --- a/otk/button.hh +++ b/otk/button.hh @@ -12,9 +12,6 @@ public: Button(Widget *parent); virtual ~Button(); - virtual inline bool isDefault() const { return _default; } - virtual void setDefault(bool d); - virtual inline bool isPressed() const { return _pressed; } virtual void press(unsigned int mouse_button); @@ -26,7 +23,6 @@ public: virtual void styleChanged(const RenderStyle &style); private: - bool _default; bool _pressed; unsigned int _mouse_button; }; diff --git a/otk/label.cc b/otk/label.cc index 0c18b5d0..c56f91f8 100644 --- a/otk/label.cc +++ b/otk/label.cc @@ -16,7 +16,8 @@ Label::Label(Widget *parent) : Widget(parent), _text(""), _justify_horz(RenderStyle::LeftTopJustify), - _justify_vert(RenderStyle::LeftTopJustify) + _justify_vert(RenderStyle::LeftTopJustify), + _highlight(true) { styleChanged(*RenderStyle::style(screen())); } @@ -37,6 +38,13 @@ void Label::setVerticalJustify(RenderStyle::Justify j) refresh(); } +void Label::setHighlighted(bool h) +{ + _highlight = h; + styleChanged(*RenderStyle::style(screen())); + refresh(); +} + void Label::setText(const ustring &text) { bool utf = text.utf8(); @@ -77,8 +85,13 @@ void Label::calcDefaultSizes() void Label::styleChanged(const RenderStyle &style) { - _texture = style.labelFocusBackground(); - _forecolor = style.textFocusColor(); + if (_highlight) { + _texture = style.labelFocusBackground(); + _forecolor = style.textFocusColor(); + } else { + _texture = style.labelUnfocusBackground(); + _forecolor = style.textUnfocusColor(); + } _font = style.labelFont(); Widget::styleChanged(style); calcDefaultSizes(); diff --git a/otk/label.hh b/otk/label.hh index 1b31ae79..b3e9c166 100644 --- a/otk/label.hh +++ b/otk/label.hh @@ -20,6 +20,9 @@ public: inline const ustring& getText(void) const { return _text; } void setText(const ustring &text); + virtual inline bool isHighlighted() const { return _highlight; } + virtual void setHighlighted(bool h); + RenderStyle::Justify horizontalJustify() const { return _justify_horz; } virtual void setHorizontalJustify(RenderStyle::Justify j); RenderStyle::Justify verticalJustify() const { return _justify_vert; } @@ -53,6 +56,8 @@ private: RenderStyle::Justify _justify_vert; //! The drawing offset for the text int _drawx; + //! If the widget is highlighted or not + bool _highlight; }; } diff --git a/scripts/stackedcycle.py b/scripts/stackedcycle.py index fc086aad..c951f6b3 100644 --- a/scripts/stackedcycle.py +++ b/scripts/stackedcycle.py @@ -112,10 +112,10 @@ class _cycledata: w = otk.Label(self.widget) if current and c.window() == current.window(): self.menupos = i - #w.focus() XXX + w.setHighlighted(1) pass else: - #w.unfocus() XXX + w.setHighlighted(0) pass self.menuwidgets.append(w) @@ -192,7 +192,7 @@ class _cycledata: if not len(self.clients): return # don't both doing anything - #self.menuwidgets[self.menupos].unfocus() XXX + self.menuwidgets[self.menupos].setHighlighted(0) if forward: self.menupos += 1 else: @@ -200,7 +200,7 @@ class _cycledata: # wrap around if self.menupos < 0: self.menupos = len(self.clients) - 1 elif self.menupos >= len(self.clients): self.menupos = 0 - #self.menuwidgets[self.menupos].focus() XXX + self.menuwidgets[self.menupos].setHighlighted(1) if ACTIVATE_WHILE_CYCLING: self.activatetarget(0) # activate, but dont deiconify/unshade/raise -- 2.39.2