]> Dogcows Code - chaz/openbox/commitdiff
initial commit of focus widget
authorMarius Nita <marius@cs.pdx.edu>
Wed, 13 Nov 2002 10:19:28 +0000 (10:19 +0000)
committerMarius Nita <marius@cs.pdx.edu>
Wed, 13 Nov 2002 10:19:28 +0000 (10:19 +0000)
otk/focuswidget.cc [new file with mode: 0644]
otk/focuswidget.hh [new file with mode: 0644]

diff --git a/otk/focuswidget.cc b/otk/focuswidget.cc
new file mode 100644 (file)
index 0000000..22dd875
--- /dev/null
@@ -0,0 +1,66 @@
+#include "focuswidget.hh"
+
+namespace otk {
+
+OtkFocusWidget::OtkFocusWidget(OtkWidget *parent, Direction direction)
+  : OtkWidget(parent, direction), _unfocus_texture(0), _focused(true)
+{
+  _focus_texture = parent->getTexture();
+}
+
+OtkFocusWidget::OtkFocusWidget(Style *style, Direction direction,
+                               Cursor cursor, int bevel_width)
+  : OtkWidget(style, direction, cursor, bevel_width),
+    _unfocus_texture(0), _focused(true)
+{
+}
+
+void OtkFocusWidget::focus(void)
+{
+  if (_focused)
+    return;
+
+  assert(_focus_texture);
+  OtkWidget::setTexture(_focus_texture);
+  OtkWidget::update();
+
+  OtkWidget::OtkWidgetList children = OtkWidget::getChildren();
+
+  OtkWidget::OtkWidgetList::iterator it = children.begin(),
+    end = children.end();
+
+  OtkFocusWidget *tmp = 0;
+  for (; it != end; ++it) {
+    tmp = dynamic_cast<OtkFocusWidget*>(*it);
+    if (tmp) tmp->focus();
+  }
+}
+
+void OtkFocusWidget::unfocus(void)
+{
+  if (! _focused)
+    return;
+
+  assert(_unfocus_texture);
+  OtkWidget::setTexture(_unfocus_texture);
+  OtkWidget::update();
+
+  OtkWidget::OtkWidgetList children = OtkWidget::getChildren();
+
+  OtkWidget::OtkWidgetList::iterator it = children.begin(),
+    end = children.end();
+
+  OtkFocusWidget *tmp = 0;
+  for (; it != end; ++it) {
+    tmp = dynamic_cast<OtkFocusWidget*>(*it);
+    if (tmp) tmp->unfocus();
+  }
+}
+
+void OtkFocusWidget::setTexture(BTexture *texture)
+{
+  OtkWidget::setTexture(texture);
+  _focus_texture = texture;
+}
+
+}
diff --git a/otk/focuswidget.hh b/otk/focuswidget.hh
new file mode 100644 (file)
index 0000000..8397734
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef __focuswidget_hh
+#define __focuswidget_hh
+
+#include "widget.hh"
+
+namespace otk {
+
+class OtkFocusWidget : public OtkWidget {
+
+public:
+
+  OtkFocusWidget(OtkWidget *parent, Direction = Horizontal);
+  OtkFocusWidget(Style *style, Direction direction = Horizontal,
+                 Cursor cursor = 0, int bevel_width = 1);
+
+  virtual void focus(void);
+  virtual void unfocus(void);
+
+  void setTexture(BTexture *texture);
+
+  inline void setUnfocusTexture(BTexture *texture)
+  { _unfocus_texture = texture; }
+  inline BTexture *getUnfocusTexture(void) const
+  { return _unfocus_texture; }
+
+  inline bool isFocused(void) const { return _focused; }
+  inline bool isUnfocused(void) const { return !_focused; }
+
+private:
+
+  BTexture *_unfocus_texture;
+  BTexture *_focus_texture;
+
+  bool _focused;
+};
+
+}
+
+#endif // __focuswidget_hh
This page took 0.02834 seconds and 4 git commands to generate.