Panel::Panel(const Resources &r):
Widget(r),
pointer_focus(0),
- pointer_grab(0)
+ pointer_grab(0),
+ input_focus(0)
{
update_style();
}
{
(*i)->button_press(x-geom.x, y-geom.y, btn);
pointer_grab=btn;
+ set_input_focus(*i);
}
}
}
}
}
+void Panel::key_press(unsigned key, unsigned mod, wchar_t ch)
+{
+ if(input_focus)
+ input_focus->key_press(key, mod, ch);
+}
+
+void Panel::key_release(unsigned key, unsigned mod)
+{
+ if(input_focus)
+ input_focus->key_release(key, mod);
+}
+
+void Panel::focus_out()
+{
+ set_input_focus(0);
+}
+
void Panel::add(Widget &wdg)
{
children.push_back(&wdg);
}
}
+void Panel::set_input_focus(Widget *wdg)
+{
+ if(wdg!=input_focus)
+ {
+ if(input_focus)
+ input_focus->focus_out();
+
+ input_focus=wdg;
+
+ if(input_focus)
+ input_focus->focus_in();
+ }
+}
+
} // namespace GLtk
} // namespace Msp