gint ghid_port_window_motion_cb (GtkWidget * widget, GdkEventButton * ev, GHidPort * out) { gdouble dx, dy; static gint x_prev = -1, y_prev = -1; gboolean moved; if (out->panning) { if (gtk_events_pending ()) return FALSE; dx = gport->zoom * (x_prev - ev->x); dy = gport->zoom * (y_prev - ev->y); if (x_prev > 0) ghid_port_ranges_pan (dx, dy, TRUE); x_prev = ev->x; y_prev = ev->y; return FALSE; } x_prev = y_prev = -1; moved = ghid_note_event_location (ev); #if ENABLE_TOOLTIPS queue_tooltip_update (out); #endif ghid_show_crosshair (TRUE); if (moved && have_crosshair_attachments ()) ghid_draw_area_update (gport, NULL); return FALSE; }
gint ghid_port_window_motion_cb (GtkWidget * widget, GdkEventMotion * ev, GHidPort * out) { gdouble dx, dy; static gint x_prev = -1, y_prev = -1; gdk_event_request_motions (ev); if (out->panning) { dx = gport->view.coord_per_px * (x_prev - ev->x); dy = gport->view.coord_per_px * (y_prev - ev->y); if (x_prev > 0) ghid_pan_view_rel (dx, dy); x_prev = ev->x; y_prev = ev->y; return FALSE; } x_prev = y_prev = -1; ghid_note_event_location ((GdkEventButton *)ev); queue_tooltip_update (out); return FALSE; }
gboolean ghid_port_button_release_cb (GtkWidget * drawing_area, GdkEventButton * ev, GtkUIManager * ui) { ModifierKeysState mk; gboolean drag; GdkModifierType state; ghid_note_event_location (ev); state = (GdkModifierType) (ev->state); mk = ghid_modifier_keys_state (&state); drag = have_crosshair_attachments (); if (drag) HideCrosshair (TRUE); do_mouse_action(ev->button, mk + M_Release); if (drag) { AdjustAttachedObjects (); ghid_invalidate_all (); RestoreCrosshair (TRUE); ghid_screen_update (); } ghid_set_status_line_label (); g_idle_add (ghid_idle_cb, NULL); return TRUE; }
gboolean ghid_port_button_press_cb (GtkWidget * drawing_area, GdkEventButton * ev, GtkUIManager * ui) { ModifierKeysState mk; gboolean drag; GdkModifierType state; /* Reject double and triple click events */ if (ev->type != GDK_BUTTON_PRESS) return TRUE; ghid_note_event_location (ev); state = (GdkModifierType) (ev->state); mk = ghid_modifier_keys_state (&state); ghid_show_crosshair (FALSE); HideCrosshair (TRUE); drag = have_crosshair_attachments (); do_mouse_action(ev->button, mk); ghid_invalidate_all (); RestoreCrosshair (TRUE); ghid_set_status_line_label (); ghid_show_crosshair (TRUE); if (!gport->panning) g_idle_add (ghid_idle_cb, NULL); return TRUE; }
/* User hit a mouse button in the Output drawing area, so quit the loop | and the cursor values when the button was pressed will be used. */ static gboolean loop_button_press_cb (GtkWidget * drawing_area, GdkEventButton * ev, GMainLoop ** loop) { if (g_main_loop_is_running (*loop)) g_main_loop_quit (*loop); ghid_note_event_location (ev); return TRUE; }
gboolean ghid_port_key_release_cb (GtkWidget * drawing_area, GdkEventKey * kev, gpointer data) { gint ksym = kev->keyval; if (ghid_is_modifier_key_sym (ksym)) ghid_note_event_location (NULL); AdjustAttachedObjects (); ghid_invalidate_all (); g_idle_add (ghid_idle_cb, NULL); return FALSE; }
gboolean ghid_port_key_release_cb (GtkWidget * drawing_area, GdkEventKey * kev, GtkUIManager * ui) { gint ksym = kev->keyval; if (ghid_is_modifier_key_sym (ksym)) ghid_note_event_location (NULL); HideCrosshair (TRUE); AdjustAttachedObjects (); ghid_invalidate_all (); RestoreCrosshair (TRUE); ghid_screen_update (); g_idle_add (ghid_idle_cb, NULL); return FALSE; }
gboolean ghid_port_ranges_pan (gdouble x, gdouble y, gboolean relative) { GtkAdjustment *h_adj, *v_adj; gdouble x0, y0, x1, y1; h_adj = gtk_range_get_adjustment (GTK_RANGE (ghidgui->h_range)); v_adj = gtk_range_get_adjustment (GTK_RANGE (ghidgui->v_range)); x0 = h_adj->value; y0 = v_adj->value; if (relative) { x1 = x0 + x; y1 = y0 + y; } else { x1 = x; y1 = y; } if (x1 < h_adj->lower) x1 = h_adj->lower; if (x1 > h_adj->upper - h_adj->page_size) x1 = h_adj->upper - h_adj->page_size; if (y1 < v_adj->lower) y1 = v_adj->lower; if (y1 > v_adj->upper - v_adj->page_size) y1 = v_adj->upper - v_adj->page_size; if (x0 != x1 && y0 != y1) ghidgui->combine_adjustments = TRUE; if (x0 != x1) gtk_range_set_value (GTK_RANGE (ghidgui->h_range), x1); if (y0 != y1) gtk_range_set_value (GTK_RANGE (ghidgui->v_range), y1); ghid_note_event_location (NULL); return ((x0 != x1) || (y0 != y1)); }
gboolean ghid_port_button_release_cb (GtkWidget * drawing_area, GdkEventButton * ev, gpointer data) { ModifierKeysState mk; GdkModifierType state; ghid_note_event_location (ev); state = (GdkModifierType) (ev->state); mk = ghid_modifier_keys_state (&state); do_mouse_action(ev->button, mk + M_Release); AdjustAttachedObjects (); ghid_invalidate_all (); ghid_window_set_name_label (PCB->Name); ghid_set_status_line_label (); g_idle_add (ghid_idle_cb, NULL); return TRUE; }
gboolean ghid_port_button_press_cb (GtkWidget * drawing_area, GdkEventButton * ev, gpointer data) { ModifierKeysState mk; GdkModifierType state; /* Reject double and triple click events */ if (ev->type != GDK_BUTTON_PRESS) return TRUE; ghid_note_event_location (ev); state = (GdkModifierType) (ev->state); mk = ghid_modifier_keys_state (&state); do_mouse_action(ev->button, mk); ghid_invalidate_all (); ghid_window_set_name_label (PCB->Name); ghid_set_status_line_label (); if (!gport->panning) g_idle_add (ghid_idle_cb, NULL); return TRUE; }
gboolean ghid_port_key_press_cb (GtkWidget * drawing_area, GdkEventKey * kev, gpointer data) { ModifierKeysState mk; gint ksym = kev->keyval; gboolean handled; extern void ghid_hotkey_cb (int); GdkModifierType state; if (ghid_is_modifier_key_sym (ksym)) ghid_note_event_location (NULL); state = (GdkModifierType) (kev->state); mk = ghid_modifier_keys_state (&state); handled = TRUE; /* Start off assuming we handle it */ switch (ksym) { case GDK_Alt_L: case GDK_Alt_R: case GDK_Control_L: case GDK_Control_R: case GDK_Shift_L: case GDK_Shift_R: case GDK_Shift_Lock: case GDK_ISO_Level3_Shift: break; case GDK_Up: ghid_hotkey_cb (GHID_KEY_UP); break; case GDK_Down: ghid_hotkey_cb (GHID_KEY_DOWN); break; case GDK_Left: ghid_hotkey_cb (GHID_KEY_LEFT); break; case GDK_Right: ghid_hotkey_cb (GHID_KEY_RIGHT); break; case GDK_ISO_Left_Tab: case GDK_3270_BackTab: switch (mk) { case NONE_PRESSED: ghid_hotkey_cb (GHID_KEY_SHIFT | GHID_KEY_TAB); break; case CONTROL_PRESSED: ghid_hotkey_cb (GHID_KEY_CONTROL | GHID_KEY_SHIFT | GHID_KEY_TAB); break; case MOD1_PRESSED: ghid_hotkey_cb (GHID_KEY_ALT | GHID_KEY_SHIFT | GHID_KEY_TAB); break; case SHIFT_PRESSED: ghid_hotkey_cb (GHID_KEY_SHIFT | GHID_KEY_TAB); break; case SHIFT_CONTROL_PRESSED: ghid_hotkey_cb (GHID_KEY_CONTROL | GHID_KEY_SHIFT | GHID_KEY_TAB); break; case SHIFT_MOD1_PRESSED: ghid_hotkey_cb (GHID_KEY_ALT | GHID_KEY_SHIFT | GHID_KEY_TAB); break; default: handled = FALSE; break; } break; case GDK_Tab: switch (mk) { case NONE_PRESSED: ghid_hotkey_cb (GHID_KEY_TAB); break; case CONTROL_PRESSED: ghid_hotkey_cb (GHID_KEY_CONTROL | GHID_KEY_TAB); break; case MOD1_PRESSED: ghid_hotkey_cb (GHID_KEY_ALT | GHID_KEY_TAB); break; case SHIFT_PRESSED: ghid_hotkey_cb (GHID_KEY_SHIFT | GHID_KEY_TAB); break; case SHIFT_CONTROL_PRESSED: ghid_hotkey_cb (GHID_KEY_CONTROL | GHID_KEY_SHIFT | GHID_KEY_TAB); break; case SHIFT_MOD1_PRESSED: ghid_hotkey_cb (GHID_KEY_ALT | GHID_KEY_SHIFT | GHID_KEY_TAB); break; default: handled = FALSE; break; } break; default: handled = FALSE; } return handled; }