fixed compilation with gtk 2.20
authorVladimir Nadvornik <nadvornik@suse.cz>
Tue, 14 Aug 2012 18:22:37 +0000 (20:22 +0200)
committerVladimir Nadvornik <nadvornik@suse.cz>
Tue, 14 Aug 2012 18:22:37 +0000 (20:22 +0200)
README
configure.in
src/compat.c
src/compat.h
src/ui_tree_edit.c

diff --git a/README b/README
index 26dad4d..4e02aae 100644 (file)
--- a/README
+++ b/README
@@ -48,10 +48,7 @@ geeqie-devel@lists.sourceforge.net
 ======== Requirements
 
   Required libraries:
-    GTK+ 2.??.x: ftp://ftp.gtk.org/pub/gtk
-FIXME: determine realistic requirements.
-It compiles with GTK 2.10, but some features are disabled and the testing was
-minimal. Please report success or  falilures.
+    GTK+ 2.20: ftp://ftp.gtk.org/pub/gtk
 
   Optional libraries:
     lcms, for color management support: http://www.littlecms.com
index 258b539..b4354f8 100644 (file)
@@ -190,12 +190,21 @@ else
 fi
 
 AM_PATH_GLIB_2_0(2.4.0,,AC_MSG_ERROR(GLIB >= 2.4.0 not installed.))
-AC_ARG_ENABLE([gtk3], AC_HELP_STRING([--disable-gtk3], [use gtk2 instead of gtk3]),[gtk3="${enableval}"], [gtk3=m4_ifdef([AM_PATH_GTK_3_0], [yes], [no])])
+AC_ARG_ENABLE([gtk3], AC_HELP_STRING([--disable-gtk3], [use gtk2 instead of gtk3]),[gtk3="${enableval}"], [gtk3=m4_ifdef([AM_PATH_GTK_3_0], [auto], [no])])
 
 if test x$gtk3 == xyes; then
+    AC_MSG_WARN("Gtk3 enabled")
     m4_ifdef([AM_PATH_GTK_3_0], [AM_PATH_GTK_3_0(3.0.0,,AC_MSG_ERROR(GTK+ >= 3.0.0 not installed.))])
 else
-    m4_ifdef([AM_PATH_GTK_2_0], [AM_PATH_GTK_2_0(2.12.0,,AC_MSG_ERROR(GTK+ >= 2.12.0 not installed.))])
+    if test x$gtk3 != xno; then
+       AC_MSG_WARN("Gtk3 is preferred...")
+       m4_ifdef([AM_PATH_GTK_3_0], [AM_PATH_GTK_3_0(3.0.0,,[gtk3=no])])
+    fi
+fi
+
+if test x$gtk3 == xno; then
+    m4_ifdef([AM_PATH_GTK_2_0], [AM_PATH_GTK_2_0(2.20.0,,AC_MSG_ERROR(GTK+ >= 2.12.0 not installed.))])
+    true
 fi
 
 threads="auto"
index a4fbeea..4574f6b 100644 (file)
@@ -55,4 +55,30 @@ GList* hash_table_get_keys(GHashTable *hash_table)
 #endif
 }
 
+#if !GTK_CHECK_VERSION(2,24,0)
+gint compat_gdk_window_get_width(GdkWindow *window)
+{
+       gint w, h;
+       gdk_drawable_get_size(window, &w, &h);
+       return w;
+}
+
+gint compat_gdk_window_get_height(GdkWindow *window)
+{
+       gint w, h;
+       gdk_drawable_get_size(window, &w, &h);
+       return h;
+}
+#endif
+
+#if !GTK_CHECK_VERSION(2,22,0)
+cairo_surface_t *compat_gdk_window_create_similar_surface (GdkWindow *window, cairo_content_t content, gint width, gint height)
+{
+       cairo_t *cr = gdk_cairo_create(window);
+       cairo_surface_t *ws = cairo_get_target(cr); 
+       cairo_surface_t *ret = cairo_surface_create_similar(ws, content, width, height);
+       cairo_destroy(cr);
+       return ret;
+}
+#endif
 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
index c39943e..dd1b268 100644 (file)
@@ -28,6 +28,64 @@ GList* hash_table_get_keys(GHashTable *hash_table);
 #define        MAP_ANON        MAP_ANONYMOUS
 #endif
 
+#ifndef GDK_KEY_Up
+#define GDK_KEY_BackSpace      GDK_BackSpace
+#define GDK_KEY_Delete         GDK_Delete
+#define GDK_KEY_Down           GDK_Down
+#define GDK_KEY_End            GDK_End
+#define GDK_KEY_Escape         GDK_Escape
+#define GDK_KEY_F10            GDK_F10
+#define GDK_KEY_F11            GDK_F11
+#define GDK_KEY_Home           GDK_Home
+#define GDK_KEY_ISO_Left_Tab   GDK_ISO_Left_Tab
+#define GDK_KEY_KP_Add         GDK_KP_Add
+#define GDK_KEY_KP_Delete      GDK_KP_Delete
+#define GDK_KEY_KP_Divide      GDK_KP_Divide
+#define GDK_KEY_KP_Down                GDK_KP_Down
+#define GDK_KEY_KP_End         GDK_KP_End
+#define GDK_KEY_KP_Enter       GDK_KP_Enter
+#define GDK_KEY_KP_Home                GDK_KP_Home
+#define GDK_KEY_KP_Left                GDK_KP_Left
+#define GDK_KEY_KP_Multiply    GDK_KP_Multiply
+#define GDK_KEY_KP_Page_Down   GDK_KP_Page_Down
+#define GDK_KEY_KP_Page_Up     GDK_KP_Page_Up
+#define GDK_KEY_KP_Right       GDK_KP_Right
+#define GDK_KEY_KP_Subtract    GDK_KP_Subtract
+#define GDK_KEY_KP_Up          GDK_KP_Up
+#define GDK_KEY_Left           GDK_Left
+#define GDK_KEY_Menu           GDK_Menu
+#define GDK_KEY_Page_Down      GDK_Page_Down
+#define GDK_KEY_Page_Up                GDK_Page_Up
+#define GDK_KEY_plus           GDK_plus
+#define GDK_KEY_Return         GDK_Return
+#define GDK_KEY_Right          GDK_Right
+#define GDK_KEY_space          GDK_space
+#define GDK_KEY_Tab            GDK_Tab
+#define GDK_KEY_Up             GDK_Up
+#endif
+
+#if !GTK_CHECK_VERSION(2,24,0)
+#define gtk_combo_box_text_new gtk_combo_box_new_text
+#define gtk_combo_box_text_append_text gtk_combo_box_append_text
+#define gtk_combo_box_text_new_with_entry gtk_combo_box_entry_new_text
+#define gtk_combo_box_new_with_model_and_entry(model) gtk_combo_box_entry_new_with_model(model, FILTER_COLUMN_FILTER)
+#define GTK_COMBO_BOX_TEXT(combo) GTK_COMBO_BOX(combo) 
+#define gdk_window_get_width(window) compat_gdk_window_get_width(window)
+#define gdk_window_get_height(window) compat_gdk_window_get_height(window)
+
+gint compat_gdk_window_get_width(GdkWindow *window);
+gint compat_gdk_window_get_height(GdkWindow *window);
+
+#endif
+
+#if !GTK_CHECK_VERSION(2,24,0)
+#define gdk_window_create_similar_surface(window, content, width, height) compat_gdk_window_create_similar_surface(window, content, width, height)
+cairo_surface_t *compat_gdk_window_create_similar_surface (GdkWindow *window, cairo_content_t content, gint width, gint height);
+
+#define gdk_drag_context_get_selected_action(context) ((context)->action)
+#define gdk_drag_context_get_suggested_action(context) ((context)->suggested_action)
+#define gdk_drag_context_get_actions(context) ((context)->actions)
+#endif
 
 #endif /* COMPAT_H */
 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
index a6a4798..d1f6b50 100644 (file)
@@ -22,6 +22,8 @@
 #include <gtk/gtk.h>
 #include <gdk/gdkkeysyms.h>
 
+#include "compat.h"
+
 #include "ui_tree_edit.h"
 
 /*