X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=libchimara%2Fmouse.c;h=3fd464fc04aa79f4f80fcc3ce2b72d6116d12136;hb=65f88142d8843d16c203efad8830fbebba888f0f;hp=f6c23b229e3b595114e26fa3b21c9991c1f46c06;hpb=c3a39d7832a862e2fd6c3ed291121f0d791c7e52;p=rodin%2Fchimara.git diff --git a/libchimara/mouse.c b/libchimara/mouse.c index f6c23b2..3fd464f 100644 --- a/libchimara/mouse.c +++ b/libchimara/mouse.c @@ -6,7 +6,7 @@ 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_return_if_fail(win->type == wintype_TextGrid || win->type == wintype_Graphics); g_signal_handler_unblock(win->widget, win->button_press_event_handler); } @@ -16,7 +16,7 @@ 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_return_if_fail(win->type == wintype_TextGrid || win->type == wintype_Graphics); g_signal_handler_block(win->widget, win->button_press_event_handler); } @@ -27,8 +27,17 @@ 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); + switch(win->type) + { + case wintype_TextGrid: + event_throw(glk, evtype_MouseInput, win, event->x/win->unit_width, event->y/win->unit_height); + break; + case wintype_Graphics: + event_throw(glk, evtype_MouseInput, win, event->x, event->y); + break; + default: + ILLEGAL_PARAM("Unknown window type: %u", win->type); + } return TRUE; }