]> Dogcows Code - chaz/openbox/blobdiff - otk/focuswidget.cc
add an OBBackgroundWidget and use it for setting colors so far.
[chaz/openbox] / otk / focuswidget.cc
index 6ad19c6e822f8ae3770362e3a42968d3011739a9..f5b176bfc4bc1bd90dde1dc3fbbce33a9248e3b8 100644 (file)
@@ -1,49 +1,52 @@
+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
+
+#ifdef HAVE_CONFIG_H
+# include "../config.h"
+#endif
+
 #include "focuswidget.hh"
 
 namespace otk {
 
 OtkFocusWidget::OtkFocusWidget(OtkWidget *parent, Direction direction)
-  : OtkWidget(parent, direction), _unfocus_texture(0), _focused(true)
+  : OtkWidget(parent, direction), _unfocus_texture(0), _unfocus_bcolor(0)
 {
+  _focused = true;
   _focus_texture = parent->getTexture();
+  _focus_bcolor = parent->getBorderColor();
 }
 
-OtkFocusWidget::OtkFocusWidget(Style *style, Direction direction,
-                               Cursor cursor, int bevel_width)
-  : OtkWidget(style, direction, cursor, bevel_width),
-    _unfocus_texture(0), _focused(true)
+OtkFocusWidget::~OtkFocusWidget()
 {
 }
 
+#include <stdio.h>
 void OtkFocusWidget::focus(void)
 {
-  if (_focused)
+  if (!isVisible() || _focused)
     return;
 
-  // XXX: what about OtkWidget::focus()
+  printf("FOCUS\n");
+  OtkWidget::focus();
+
+  if (_focus_bcolor)
+    OtkWidget::setBorderColor(_focus_bcolor);
 
-  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)
+  if (!isVisible() || !_focused)
     return;
 
-  assert(_unfocus_texture);
+  printf("UNFOCUS\n");
+  OtkWidget::unfocus();
+
+  if (_unfocus_bcolor)
+    OtkWidget::setBorderColor(_unfocus_bcolor);
+
   OtkWidget::setTexture(_unfocus_texture);
   OtkWidget::update();
 
@@ -65,4 +68,10 @@ void OtkFocusWidget::setTexture(BTexture *texture)
   _focus_texture = texture;
 }
 
+void OtkFocusWidget::setBorderColor(const BColor *color)
+{
+  OtkWidget::setBorderColor(color);
+  _focus_bcolor = color;
+}
+
 }
This page took 0.024326 seconds and 4 git commands to generate.