/* Define to 1 if you have the <execinfo.h> header file. */
#mesondefine HAVE_EXECINFO_H
+
+/* Do not use */
+#mesondefine HAVE_GTK4
+
#endif
conf_data.set_quoted('VERSION', meson.project_version())
conf_data.set('DEBUG', debug)
-gtk_dep = dependency('gtk+-3.0', version : '>=3.22', required: true)
+option = get_option('gtk4')
+if option.enabled()
+ gtk_dep = dependency('gtk4', required: true)
+ conf_data.set('HAVE_GTK4', 1)
+else
+ gtk_dep = dependency('gtk+-3.0', version : '>=3.24', required: true)
+endif
glib_dep = dependency('glib-2.0', version : '>=2.52', required: true)
# Required only when backward-cpp is used
option('exiv2', type : 'feature', value : 'auto', description : 'exiv2')
option('git', type : 'feature', value : 'auto', description : 'lua-api and changelog.html')
option('gps-map', type : 'feature', value : 'auto', description : 'gps map')
+option('gtk4', type : 'feature', value : 'disabled', description : 'gtk4 - do not use')
option('heif', type : 'feature', value : 'auto', description : 'heif')
option('j2k', type : 'feature', value : 'auto', description : 'j2k')
option('jpeg', type : 'feature', value : 'auto', description : 'jpeg')
return menu;
}
-static gboolean bar_pane_histogram_press_cb(GtkWidget *UNUSED(widget), GdkEventButton *bevent, gpointer data)
+static gboolean bar_pane_histogram_press_cb(GtkGesture *UNUSED(gesture), gint UNUSED(n_press), gdouble UNUSED(x), gdouble UNUSED(y), gpointer data)
{
PaneHistogramData *phd = data;
+ GtkWidget *menu;
- if (bevent->button == MOUSE_BUTTON_RIGHT)
- {
- GtkWidget *menu;
-
- menu = bar_pane_histogram_menu(phd);
- gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
- return TRUE;
- }
+ menu = bar_pane_histogram_menu(phd);
+ gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
- return FALSE;
+ return TRUE;
}
static GtkWidget *bar_pane_histogram_new(const gchar *id, const gchar *title, gint height, gboolean expanded, gint histogram_channel, gint histogram_mode)
{
PaneHistogramData *phd;
+ GtkGesture *gesture;
phd = g_new0(PaneHistogramData, 1);
gtk_widget_show(phd->drawing_area);
gtk_widget_add_events(phd->drawing_area, GDK_BUTTON_PRESS_MASK);
- g_signal_connect(G_OBJECT(phd->drawing_area), "button_press_event", G_CALLBACK(bar_pane_histogram_press_cb), phd);
+
+#ifdef HAVE_GTK4
+ gesture = gtk_gesture_click_new();
+ gtk_widget_add_controller(phd->drawing_area, GTK_EVENT_CONTROLLER(gesture));
+#else
+ gesture = gtk_gesture_multi_press_new(phd->drawing_area);
+#endif
+ gtk_gesture_single_set_button(GTK_GESTURE_SINGLE(gesture), MOUSE_BUTTON_RIGHT);
+ g_signal_connect(gesture, "pressed", G_CALLBACK(bar_pane_histogram_press_cb), phd);
gtk_widget_show(phd->widget);