aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dw/fltkviewbase.cc10
-rw-r--r--dw/fltkviewbase.hh2
2 files changed, 6 insertions, 6 deletions
diff --git a/dw/fltkviewbase.cc b/dw/fltkviewbase.cc
index f7e331fc..9ec5a71a 100644
--- a/dw/fltkviewbase.cc
+++ b/dw/fltkviewbase.cc
@@ -69,7 +69,7 @@ FltkViewBase::FltkViewBase (int x, int y, int w, int h, const char *label):
canvasHeight = 1;
bgColor = FL_WHITE;
mouse_x = mouse_y = 0;
- // focused_child = NULL;
+ focused_child = NULL;
exposeArea = NULL;
if (backBuffer == NULL) {
backBuffer = new BackBuffer ();
@@ -355,8 +355,6 @@ int FltkViewBase::handle (int event)
case FL_LEAVE:
theLayout->leaveNotify (this, getDwButtonState ());
break;
-#if 0
- // BUG: starting with fltk-1.3.3, we can't use fl_oldfocus.
case FL_FOCUS:
if (focused_child && find(focused_child) < children()) {
/* strangely, find() == children() if the child is not found */
@@ -364,9 +362,11 @@ int FltkViewBase::handle (int event)
}
return 1;
case FL_UNFOCUS:
- focused_child = fl_oldfocus;
+ // was: focused_child = fl_oldfocus;
+ for (Fl_Widget *p = this; p; p = p->parent())
+ focused_child = p;
+
return 0;
-#endif
case FL_KEYBOARD:
if (Fl::event_key() == FL_Tab)
return manageTabToFocus();
diff --git a/dw/fltkviewbase.hh b/dw/fltkviewbase.hh
index 88fd9041..eb4ec322 100644
--- a/dw/fltkviewbase.hh
+++ b/dw/fltkviewbase.hh
@@ -56,7 +56,7 @@ protected:
core::Layout *theLayout;
int canvasWidth, canvasHeight;
int mouse_x, mouse_y;
- // Fl_Widget *focused_child;
+ Fl_Widget *focused_child;
virtual int translateViewXToCanvasX (int x) = 0;
virtual int translateViewYToCanvasY (int y) = 0;