]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/panel.cpp
Clear focus in Panel if focused child is removed
[libs/gltk.git] / source / panel.cpp
index f17439a5eca810b8510d3537fc750a53c2b5868a..a4b27699f693c71ff7f01a62b939ce60377d96d3 100644 (file)
@@ -15,6 +15,7 @@ Distributed under the LGPL
 #include "list.h"
 #include "panel.h"
 #include "part.h"
+#include "table.h"
 #include "toggle.h"
 #include "vslider.h"
 
@@ -49,6 +50,11 @@ void Panel::remove(Widget &wdg)
        ChildSeq::iterator i=find(children.begin(), children.end(), &wdg);
        if(i!=children.end())
        {
+               if(&wdg==pointer_focus)
+                       set_pointer_focus(0, 0);
+               if(&wdg==input_focus)
+                       set_input_focus(0);
+
                set_parent(wdg, 0);
                children.erase(i);
        }
@@ -233,6 +239,7 @@ Panel::Loader::Loader(Panel &p, map<string, Widget *> &m):
        add("label",     &Loader::child<Label>);
        add("list",      &Loader::child<List>);
        add("panel",     &Loader::panel);
+       add("table",     &Loader::child<Table>);
        add("toggle",    &Loader::child<Toggle>);
        add("vslider",   &Loader::child<VSlider>);
 }