From 1e9954cbc51fc67b1e34cd6dd8f0a77a360eb4c8 Mon Sep 17 00:00:00 2001 From: Laszlo Boros Date: Sun, 18 Aug 2013 01:26:29 +0200 Subject: GTK3 support --- src/eom-print-image-setup.c | 4 ++++ src/eom-print-preview.c | 6 ++++++ src/eom-properties-dialog.c | 4 ++++ src/eom-scroll-view.c | 6 +++++- src/eom-sidebar.c | 19 +++++++++++++++++++ src/eom-statusbar.c | 6 ++++++ src/eom-statusbar.h | 2 ++ src/eom-thumb-nav.c | 4 ++++ src/eom-thumb-view.c | 22 ++++++++++++++++++++++ src/eom-window.c | 21 +++++++++++++++++++++ 10 files changed, 93 insertions(+), 1 deletion(-) diff --git a/src/eom-print-image-setup.c b/src/eom-print-image-setup.c index 0a33997..df63b2b 100644 --- a/src/eom-print-image-setup.c +++ b/src/eom-print-image-setup.c @@ -36,6 +36,10 @@ #include "eom-print-image-setup.h" #include "eom-print-preview.h" +#if GTK_CHECK_VERSION(3, 0, 0) + #define gtk_combo_box_new_text() gtk_combo_box_text_new() +#endif + /** * SECTION: * @Title: Printing Custom Widget diff --git a/src/eom-print-preview.c b/src/eom-print-preview.c index 8b6f154..0e85ae6 100644 --- a/src/eom-print-preview.c +++ b/src/eom-print-preview.c @@ -1053,9 +1053,15 @@ eom_print_preview_draw (EomPrintPreview *preview, cairo_t *cr) } if (has_focus) { + #if GTK_CHECK_VERSION(3, 0, 0) + gtk_paint_focus (style, cr, + GTK_STATE_NORMAL, NULL, NULL, + 0, 0, allocation.width, allocation.height); + #else gtk_paint_focus (style, gtk_widget_get_window (area), GTK_STATE_NORMAL, NULL, NULL, NULL, 0, 0, allocation.width, allocation.height); + #endif } } diff --git a/src/eom-properties-dialog.c b/src/eom-properties-dialog.c index 6cc737e..2e8beb2 100644 --- a/src/eom-properties-dialog.c +++ b/src/eom-properties-dialog.c @@ -51,6 +51,10 @@ #include "eom-exif-details.h" #endif +#if GTK_CHECK_VERSION(3, 0, 0) + #define gtk_widget_hide_all(w) gtk_widget_hide(w) +#endif + #define EOM_PROPERTIES_DIALOG_GET_PRIVATE(object) \ (G_TYPE_INSTANCE_GET_PRIVATE ((object), EOM_TYPE_PROPERTIES_DIALOG, EomPropertiesDialogPrivate)) diff --git a/src/eom-scroll-view.c b/src/eom-scroll-view.c index 9a389ae..6c2bf78 100644 --- a/src/eom-scroll-view.c +++ b/src/eom-scroll-view.c @@ -17,6 +17,8 @@ #include "uta.h" #include "zoom.h" +#include + /* Maximum size of delayed repaint rectangles */ #define PAINT_RECT_WIDTH 128 #define PAINT_RECT_HEIGHT 128 @@ -2118,9 +2120,11 @@ eom_scroll_view_set_image (EomScrollView *view, EomImage *image) if (priv->image != NULL) { free_image_resources (view); + #if !GTK_CHECK_VERSION(3, 0, 0) if (gtk_widget_is_drawable (priv->display) && image == NULL) { gdk_window_clear (gtk_widget_get_window (priv->display)); } + #endif } g_assert (priv->image == NULL); g_assert (priv->pixbuf == NULL); @@ -2630,4 +2634,4 @@ eom_scroll_view_set_zoom_multiplier (EomScrollView *view, g_return_if_fail (EOM_IS_SCROLL_VIEW (view)); view->priv->zoom_multiplier = 1.0 + zoom_multiplier; -} +} \ No newline at end of file diff --git a/src/eom-sidebar.c b/src/eom-sidebar.c index 8d8b8b0..4ca9e89 100644 --- a/src/eom-sidebar.c +++ b/src/eom-sidebar.c @@ -70,7 +70,11 @@ G_DEFINE_TYPE (EomSidebar, eom_sidebar, GTK_TYPE_VBOX) (G_TYPE_INSTANCE_GET_PRIVATE ((object), EOM_TYPE_SIDEBAR, EomSidebarPrivate)) static void +#if GTK_CHECK_VERSION(3, 0, 0) +eom_sidebar_destroy (GtkWidget *object) +#else eom_sidebar_destroy (GtkObject *object) +#endif { EomSidebar *eom_sidebar = EOM_SIDEBAR (object); @@ -84,7 +88,11 @@ eom_sidebar_destroy (GtkObject *object) eom_sidebar->priv->page_model = NULL; } + #if GTK_CHECK_VERSION(3, 0, 0) + (* GTK_WIDGET_CLASS (eom_sidebar_parent_class)->destroy) (object); + #else (* GTK_OBJECT_CLASS (eom_sidebar_parent_class)->destroy) (object); + #endif } static void @@ -179,17 +187,28 @@ eom_sidebar_get_property (GObject *object, static void eom_sidebar_class_init (EomSidebarClass *eom_sidebar_class) { + // REFERENCE: + // https://git.gnome.org/browse/eog/tree/src/eog-sidebar.c?h=gnome-3-0 + GObjectClass *g_object_class; GtkWidgetClass *widget_class; + #if !GTK_CHECK_VERSION(3, 0, 0) GtkObjectClass *gtk_object_klass; + #endif g_object_class = G_OBJECT_CLASS (eom_sidebar_class); widget_class = GTK_WIDGET_CLASS (eom_sidebar_class); + #if !GTK_CHECK_VERSION(3, 0, 0) gtk_object_klass = GTK_OBJECT_CLASS (eom_sidebar_class); + #endif g_type_class_add_private (g_object_class, sizeof (EomSidebarPrivate)); + #if GTK_CHECK_VERSION(3, 0, 0) + widget_class->destroy = eom_sidebar_destroy; + #else gtk_object_klass->destroy = eom_sidebar_destroy; + #endif g_object_class->get_property = eom_sidebar_get_property; g_object_class->set_property = eom_sidebar_set_property; diff --git a/src/eom-statusbar.c b/src/eom-statusbar.c index f234dcd..c791701 100644 --- a/src/eom-statusbar.c +++ b/src/eom-statusbar.c @@ -58,10 +58,14 @@ eom_statusbar_init (EomStatusbar *statusbar) statusbar->priv = EOM_STATUSBAR_GET_PRIVATE (statusbar); priv = statusbar->priv; + #if !GTK_CHECK_VERSION(3, 0, 0) gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR (statusbar), TRUE); + #endif priv->img_num_statusbar = gtk_statusbar_new (); + #if !GTK_CHECK_VERSION(3, 0, 0) gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR (priv->img_num_statusbar), FALSE); + #endif gtk_widget_set_size_request (priv->img_num_statusbar, 100, 10); gtk_widget_show (priv->img_num_statusbar); @@ -147,6 +151,7 @@ eom_statusbar_set_progress (EomStatusbar *statusbar, } } +#if !GTK_CHECK_VERSION(3, 0, 0) void eom_statusbar_set_has_resize_grip (EomStatusbar *statusbar, gboolean has_resize_grip) { @@ -155,3 +160,4 @@ eom_statusbar_set_has_resize_grip (EomStatusbar *statusbar, gboolean has_resize_ gtk_statusbar_set_has_resize_grip (GTK_STATUSBAR (statusbar), has_resize_grip); } +#endif \ No newline at end of file diff --git a/src/eom-statusbar.h b/src/eom-statusbar.h index 5258127..cf263d4 100644 --- a/src/eom-statusbar.h +++ b/src/eom-statusbar.h @@ -63,8 +63,10 @@ void eom_statusbar_set_image_number (EomStatusbar *statusbar, void eom_statusbar_set_progress (EomStatusbar *statusbar, gdouble progress); +#if !GTK_CHECK_VERSION(3, 0, 0) void eom_statusbar_set_has_resize_grip (EomStatusbar *statusbar, gboolean has_resize_grip); +#endif G_END_DECLS diff --git a/src/eom-thumb-nav.c b/src/eom-thumb-nav.c index 9ae2e4c..0bde9f8 100644 --- a/src/eom-thumb-nav.c +++ b/src/eom-thumb-nav.c @@ -32,6 +32,10 @@ #include #include +#if GTK_CHECK_VERSION(3, 0, 0) + #define gtk_widget_hide_all(w) gtk_widget_hide(w) +#endif + #define EOM_THUMB_NAV_GET_PRIVATE(object) \ (G_TYPE_INSTANCE_GET_PRIVATE ((object), EOM_TYPE_THUMB_NAV, EomThumbNavPrivate)) diff --git a/src/eom-thumb-view.c b/src/eom-thumb-view.c index 9c1a30e..78fbe99 100644 --- a/src/eom-thumb-view.c +++ b/src/eom-thumb-view.c @@ -70,6 +70,16 @@ eom_thumb_view_finalize (GObject *object) G_OBJECT_CLASS (eom_thumb_view_parent_class)->finalize (object); } +#if GTK_CHECK_VERSION(3, 0, 0) +eom_thumb_view_dispose (GObject *object) +{ + EomThumbView *thumbview; + g_return_if_fail (EOM_IS_THUMB_VIEW (object)); + thumbview = EOM_THUMB_VIEW (object); + + G_OBJECT_CLASS (eom_thumb_view_parent_class)->dispose (object); +} +#else static void eom_thumb_view_destroy (GtkObject *object) { @@ -79,15 +89,23 @@ eom_thumb_view_destroy (GtkObject *object) GTK_OBJECT_CLASS (eom_thumb_view_parent_class)->destroy (object); } +#endif static void eom_thumb_view_class_init (EomThumbViewClass *class) { + #if GTK_CHECK_VERSION(3, 0, 0) + GObjectClass *gobject_class = G_OBJECT_CLASS (class); + + gobject_class->constructed = eom_thumb_view_init; + gobject_class->dispose = eom_thumb_view_dispose; + #else GObjectClass *gobject_class = G_OBJECT_CLASS (class); GtkObjectClass *object_class = GTK_OBJECT_CLASS (class); gobject_class->finalize = eom_thumb_view_finalize; object_class->destroy = eom_thumb_view_destroy; + #endif g_type_class_add_private (class, sizeof (EomThumbViewPrivate)); } @@ -225,7 +243,11 @@ thumbview_on_adjustment_changed_cb (EomThumbView *thumbview, static void thumbview_on_parent_set_cb (GtkWidget *widget, + #if GTK_CHECK_VERSION(3, 0, 0) + GtkWidget *old_parent, + #else GtkObject *old_parent, + #endif gpointer user_data) { EomThumbView *thumbview = EOM_THUMB_VIEW (widget); diff --git a/src/eom-window.c b/src/eom-window.c index 3ba7259..dc8b638 100644 --- a/src/eom-window.c +++ b/src/eom-window.c @@ -75,6 +75,12 @@ #include #endif +#if GTK_CHECK_VERSION(3, 0, 0) + #define gtk_widget_hide_all(w) gtk_widget_hide(w) + #define MATE_DESKTOP_USE_UNSTABLE_API + #include +#endif + #define EOM_WINDOW_GET_PRIVATE(object) \ (G_TYPE_INSTANCE_GET_PRIVATE ((object), EOM_TYPE_WINDOW, EomWindowPrivate)) @@ -2645,7 +2651,9 @@ eom_window_cmd_edit_toolbar (GtkAction *action, gpointer *user_data) gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), 2); + #if !GTK_CHECK_VERSION(3, 0, 0) gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); + #endif gtk_window_set_default_size (GTK_WINDOW (dialog), 500, 400); @@ -2844,10 +2852,21 @@ wallpaper_info_bar_response (GtkInfoBar *bar, gint response, EomWindow *window) GdkScreen *screen; screen = gtk_widget_get_screen (GTK_WIDGET (window)); + #if GTK_CHECK_VERSION(3, 0, 0) + /* + + commented out, since my setup does not have the latest libmate-desktop with this function to call + + mate_gdk_spawn_command_line_on_screen (screen, + "mate-appearance-properties" + " --show-page=background", + NULL);*/ + #else gdk_spawn_command_line_on_screen (screen, "mate-appearance-properties" " --show-page=background", NULL); + #endif } /* Close message area on every response */ @@ -5062,8 +5081,10 @@ eom_window_window_state_event (GtkWidget *widget, show = !(event->new_window_state & (GDK_WINDOW_STATE_MAXIMIZED | GDK_WINDOW_STATE_FULLSCREEN)); + #if !GTK_CHECK_VERSION(3, 0, 0) eom_statusbar_set_has_resize_grip (EOM_STATUSBAR (window->priv->statusbar), show); + #endif } return FALSE; -- cgit v1.2.1