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()));
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
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);
virtual void styleChanged(const RenderStyle &style);
private:
- bool _default;
bool _pressed;
unsigned int _mouse_button;
};
: Widget(parent),
_text(""),
_justify_horz(RenderStyle::LeftTopJustify),
- _justify_vert(RenderStyle::LeftTopJustify)
+ _justify_vert(RenderStyle::LeftTopJustify),
+ _highlight(true)
{
styleChanged(*RenderStyle::style(screen()));
}
refresh();
}
+void Label::setHighlighted(bool h)
+{
+ _highlight = h;
+ styleChanged(*RenderStyle::style(screen()));
+ refresh();
+}
+
void Label::setText(const ustring &text)
{
bool utf = text.utf8();
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();
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; }
RenderStyle::Justify _justify_vert;
//! The drawing offset for the text
int _drawx;
+ //! If the widget is highlighted or not
+ bool _highlight;
};
}
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)
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:
# 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