X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpanel.cpp;h=a708873edbeb4a7df6e2a2a1b097dfb057df6ced;hb=aab3c89d03c1a99cb91ff1870775b2c44806bb79;hp=97c9ca4f3438d336cc77f1104dcad9e2d379ecf2;hpb=ff2e39210cf151b50db3db0c62f2a2fc771b25e8;p=libs%2Fgltk.git diff --git a/source/panel.cpp b/source/panel.cpp index 97c9ca4..a708873 100644 --- a/source/panel.cpp +++ b/source/panel.cpp @@ -163,7 +163,11 @@ void Panel::child_hidden(Widget &wdg) void Panel::grab_pointer(Widget &wdg) { if(pointer_grab==0 || pointer_focus==&wdg) + { set_pointer_focus(&wdg, 255); + if(parent) + parent->grab_pointer(*this); + } else throw InvalidState("Pointer is already grabbed"); } @@ -171,7 +175,11 @@ void Panel::grab_pointer(Widget &wdg) void Panel::ungrab_pointer(Widget &wdg) { if(pointer_focus==&wdg) + { set_pointer_focus(0, 0); + if(parent) + parent->ungrab_pointer(*this); + } else if(pointer_grab>0) throw Exception("Someone is trying to steal the pointer!"); }