Beginning work on graphic windows. Hopelessly broken still....
[rodin/chimara.git] / libchimara / mouse.c
index 98d522ff795d603359830fbef37d2b34d8defc31..3fd464fc04aa79f4f80fcc3ce2b72d6116d12136 100644 (file)
@@ -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_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_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,7 +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);
 
-       event_throw(glk, evtype_MouseInput, win, event->x/win->unit_width, event->y/win->unit_height);
+       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;
 }