X-Git-Url: https://git.stderr.nl/gitweb?p=rodin%2Fchimara.git;a=blobdiff_plain;f=libchimara%2Fmouse.c;h=f6c23b229e3b595114e26fa3b21c9991c1f46c06;hp=cead7ab53dbcb71632a5173b164cccd06994244b;hb=c3a39d7832a862e2fd6c3ed291121f0d791c7e52;hpb=c286a5107c4ad1a8ea0448174b20fab3e0928cd3 diff --git a/libchimara/mouse.c b/libchimara/mouse.c index cead7ab..f6c23b2 100644 --- a/libchimara/mouse.c +++ b/libchimara/mouse.c @@ -1,11 +1,34 @@ -#include +#include "mouse.h" +#include "magic.h" void glk_request_mouse_event(winid_t win) { + VALID_WINDOW(win, return); + g_return_if_fail(win != NULL); + g_return_if_fail(win->type == wintype_TextBuffer || win->type == wintype_TextGrid); + + g_signal_handler_unblock(win->widget, win->button_press_event_handler); } void glk_cancel_mouse_event(winid_t win) { + VALID_WINDOW(win, return); + g_return_if_fail(win != NULL); + g_return_if_fail(win->type == wintype_TextBuffer || win->type == wintype_TextGrid); + + g_signal_handler_block(win->widget, win->button_press_event_handler); +} + +gboolean +on_window_button_press(GtkWidget *widget, GdkEventButton *event, winid_t win) +{ + ChimaraGlk *glk = CHIMARA_GLK(gtk_widget_get_ancestor(win->widget, CHIMARA_TYPE_GLK)); + g_assert(glk); + + /* TODO: calculate coordinates in proper metric */ + event_throw(glk, evtype_MouseInput, win, event->x, event->y); + + return TRUE; }