void _GuiWinDrawingArea_handleClick (GuiObject widget, int x, int y) { iam_drawingarea; if (my d_clickCallback) { struct structGuiDrawingAreaClickEvent event = { me, 0 }; event. x = x; event. y = y; event. shiftKeyPressed = GetKeyState (VK_SHIFT) < 0; try { my d_clickCallback (my d_clickBoss, & event); } catch (MelderError) { Melder_flushError ("Mouse click not completely handled."); } } }
void _GuiMacDrawingArea_handleClick (GuiObject widget, EventRecord *macEvent) { iam_drawingarea; if (my d_clickCallback) { struct structGuiDrawingAreaClickEvent event = { me, 0 }; event. x = macEvent -> where. h; event. y = macEvent -> where. v; event. shiftKeyPressed = (macEvent -> modifiers & shiftKey) != 0; event. commandKeyPressed = (macEvent -> modifiers & cmdKey) != 0; event. optionKeyPressed = (macEvent -> modifiers & optionKey) != 0; event. extraControlKeyPressed = (macEvent -> modifiers & controlKey) != 0; try { my d_clickCallback (my d_clickBoss, & event); } catch (MelderError) { Melder_flushError ("Mouse click not completely handled."); } } }
static gboolean _GuiGtkDrawingArea_clickCallback (GuiObject widget, GdkEvent *e, gpointer void_me) { iam (GuiDrawingArea); if (e -> type != GDK_BUTTON_PRESS) return false; if (my d_clickCallback) { struct structGuiDrawingArea_ClickEvent event { me, 0 }; event. button = ((GdkEventButton *) e) -> button; event. x = ((GdkEventButton *) e) -> x; event. y = ((GdkEventButton *) e) -> y; event. shiftKeyPressed = (((GdkEventButton *) e) -> state & GDK_SHIFT_MASK) != 0; try { my d_clickCallback (my d_clickBoss, & event); } catch (MelderError) { Melder_flushError (U"Mouse click not completely handled."); } return true; } return false; }
static gboolean _GuiGtkDrawingArea_clickCallback (GuiObject widget, GdkEvent *e, gpointer void_me) { iam (GuiDrawingArea); if (my d_clickCallback) { struct structGuiDrawingAreaClickEvent event = { me, 0 }; trace ("event type %ld", (long) e -> type); switch (e -> type) { case GDK_BUTTON_PRESS: event. type = BUTTON_PRESS; event. button = ((GdkEventButton *) e) -> button; break; case GDK_BUTTON_RELEASE: event. type = BUTTON_RELEASE; event. button = ((GdkEventButton *) e) -> button; break; case GDK_MOTION_NOTIFY: event. type = MOTION_NOTIFY; event. button = ((GdkEventMotion *) e) -> state & GDK_BUTTON1_MASK ? 1 : ((GdkEventMotion *) e) -> state & GDK_BUTTON2_MASK ? 2 : ((GdkEventMotion *) e) -> state & GDK_BUTTON3_MASK ? 3 : ((GdkEventMotion *) e) -> state & GDK_BUTTON4_MASK ? 4 : ((GdkEventMotion *) e) -> state & GDK_BUTTON5_MASK ? 5 : 0; break; default: // Do NOTHING return FALSE; } event. x = ((GdkEventButton *) e) -> x; event. y = ((GdkEventButton *) e) -> y; event. shiftKeyPressed = (((GdkEventButton *) e) -> state & GDK_SHIFT_MASK) != 0; if (e -> type == GDK_BUTTON_PRESS || 1) { try { my d_clickCallback (my d_clickBoss, & event); } catch (MelderError) { Melder_flushError ("Mouse click not completely handled."); } return TRUE; } } return FALSE; }