}
}
-void Root::button_press_event(int x, int y, unsigned btn, unsigned)
+void Root::button_press_event(int x, int y, unsigned btn, unsigned mod)
{
if(visible)
{
+ Widget *old_focus=pointer_focus;
+
translate_coords(x, y);
button_press(x, y, btn);
+
+ if(!pointer_focus && !old_focus)
+ signal_button_press.emit(x, geom.h-1-y, btn, mod);
}
}
-void Root::button_release_event(int x, int y, unsigned btn, unsigned)
+void Root::button_release_event(int x, int y, unsigned btn, unsigned mod)
{
if(visible)
{
+ Widget *old_focus=pointer_focus;
+
translate_coords(x, y);
button_release(x, y, btn);
+
+ if(!pointer_focus && !old_focus)
+ signal_button_release.emit(x, geom.h-1-y, btn, mod);
}
}
lbl_tooltip->set_visible(false);
tooltip_target=0;
}
+
+ if(!pointer_focus)
+ signal_pointer_motion.emit(x, geom.h-1-y);
}
}
void Root::key_press_event(unsigned key, unsigned mod, wchar_t ch)
{
if(visible)
+ {
+ Widget *old_focus=input_focus;
+
key_press(Input::key_from_sys(key), mod, ch);
+
+ if(!input_focus && !old_focus)
+ signal_key_press.emit(key, mod, ch);
+ }
}
void Root::key_release_event(unsigned key, unsigned mod)
{
if(visible)
+ {
+ Widget *old_focus=input_focus;
+
key_release(Input::key_from_sys(key), mod);
+
+ if(!input_focus && !old_focus)
+ signal_key_release.emit(key, mod);
+ }
}
void Root::translate_coords(int &x, int &y)