static gboolean _lib_navigation_button_press_callback(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { dt_lib_module_t *self = (dt_lib_module_t *)user_data; dt_lib_navigation_t *d = (dt_lib_navigation_t *)self->data; d->dragging = 1; _lib_navigation_set_position(self, event->x, event->y, widget->allocation.width, widget->allocation.height); return TRUE; }
static gboolean _lib_navigation_motion_notify_callback(GtkWidget *widget, GdkEventMotion *event, gpointer user_data) { dt_lib_module_t *self = (dt_lib_module_t *)user_data; _lib_navigation_set_position(self, event->x, event->y, widget->allocation.width, widget->allocation.height); gint x, y; // notify gtk for motion_hint. gdk_window_get_pointer(event->window, &x, &y, NULL); return TRUE; }
static gboolean _lib_navigation_motion_notify_callback(GtkWidget *widget, GdkEventMotion *event, gpointer user_data) { dt_lib_module_t *self = (dt_lib_module_t *)user_data; GtkAllocation allocation; gtk_widget_get_allocation(widget, &allocation); _lib_navigation_set_position(self, event->x, event->y, allocation.width, allocation.height); gint x, y; // notify gtk for motion_hint. gdk_window_get_device_position(event->window, gdk_device_manager_get_client_pointer( gdk_display_get_device_manager(gdk_window_get_display(event->window))), &x, &y, NULL); return TRUE; }
static gboolean _lib_navigation_button_press_callback(GtkWidget *widget, GdkEventButton *event, gpointer user_data) { dt_lib_module_t *self = (dt_lib_module_t *)user_data; dt_lib_navigation_t *d = (dt_lib_navigation_t *)self->data; GtkAllocation allocation; gtk_widget_get_allocation(widget, &allocation); int w = allocation.width; int h = allocation.height; if(event->x >= w - 2 * DT_NAVIGATION_INSET - d->zoom_h - d->zoom_w && event->y <= w - 2 * DT_NAVIGATION_INSET && event->y >= h - 2 * DT_NAVIGATION_INSET - d->zoom_h && event->y <= h - 2 * DT_NAVIGATION_INSET) { // we show the zoom menu GtkMenuShell *menu = GTK_MENU_SHELL(gtk_menu_new()); GtkWidget *item; item = gtk_menu_item_new_with_label(_("small")); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(_zoom_preset_mini), self); gtk_menu_shell_append(menu, item); item = gtk_menu_item_new_with_label(_("fit to screen")); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(_zoom_preset_fit), self); gtk_menu_shell_append(menu, item); item = gtk_menu_item_new_with_label(_("100%")); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(_zoom_preset_1), self); gtk_menu_shell_append(menu, item); item = gtk_menu_item_new_with_label(_("200%")); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(_zoom_preset_2), self); gtk_menu_shell_append(menu, item); gtk_widget_show_all(GTK_WIDGET(menu)); gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time()); return TRUE; } d->dragging = 1; _lib_navigation_set_position(self, event->x, event->y, w, h); return TRUE; }