#ifndef COMPAT_H
#define COMPAT_H
+#include <gtk/gtk.h>
+
+#include <config.h>
/* Some systems (BSD,MacOsX,HP-UX,...) define MAP_ANON and not MAP_ANONYMOUS */
#if defined(MAP_ANON) && !defined(MAP_ANONYMOUS)
#define MAP_ANON MAP_ANONYMOUS
#endif
-#if !GTK_CHECK_VERSION(2,22,0)
-#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,22,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);
+#if HAVE_GTK4
+ #define gq_gtk_box_pack_end(box, child, expand, fill, padding) gtk_box_append(box, child)
+ #define gq_gtk_box_pack_start(box, child, expand, fill, padding) gtk_box_prepend(box, child)
+ #define gq_gtk_frame_set_shadow_type(frame, type) ;
+ #define gq_gtk_scrolled_window_new(hadjustment, vadjustment) gtk_scrolled_window_new()
+ #define gq_gtk_scrolled_window_set_shadow_type(scrolled_window, type) gtk_scrolled_window_set_has_frame(scrolled_window, TRUE)
+ #define gq_gtk_widget_destroy(widget) gtk_window_destroy(widget)
+ #define gq_gtk_widget_queue_draw_area(widget, x, y, width, height) gtk_widget_queue_draw(widget);
+ #define gq_gtk_widget_show_all(widget) ;
+ #define gq_gtk_window_move(window, x, y) ;
+ #define gq_gtk_window_set_keep_above(window, setting) ;
+ #define gq_gtk_window_set_position(window, position) ;
-#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
-
-#if GTK_CHECK_VERSION(3,0,0)
-#define gtk_hbox_new(homogeneous, spacing) gtk_box_new(GTK_ORIENTATION_HORIZONTAL, spacing)
-#define gtk_vbox_new(homogeneous, spacing) gtk_box_new(GTK_ORIENTATION_VERTICAL, spacing)
-#define gdk_cursor_unref(cursor) g_object_unref(G_OBJECT(cursor))
-#endif
-
-#if GTK_CHECK_VERSION(3,2,0)
-#define gtk_hpaned_new() gtk_paned_new(GTK_ORIENTATION_HORIZONTAL)
-#define gtk_vpaned_new() gtk_paned_new(GTK_ORIENTATION_VERTICAL)
-#endif
-
-#if GTK_CHECK_VERSION(3,8,0)
-#define gtk_scrolled_window_add_with_viewport(viewport, child) gtk_container_add(GTK_CONTAINER(viewport), child)
-#endif
+ void gq_gtk_container_add(GtkWidget *container, GtkWidget *widget);
+#else
+ #define gq_gtk_box_pack_end(box, child, expand, fill, padding) gtk_box_pack_end(box, child, expand, fill, padding)
+ #define gq_gtk_box_pack_start(box, child, expand, fill, padding) gtk_box_pack_start(box, child, expand, fill, padding)
+ #define gq_gtk_frame_set_shadow_type(frame, type) gtk_frame_set_shadow_type(frame, type)
+ #define gq_gtk_scrolled_window_new(hadjustment, vadjustment) gtk_scrolled_window_new(hadjustment, vadjustment)
+ #define gq_gtk_scrolled_window_set_shadow_type(scrolled_window, type) gtk_scrolled_window_set_shadow_type(scrolled_window, type)
+ #define gq_gtk_widget_destroy(widget) gtk_widget_destroy(widget)
+ #define gq_gtk_widget_queue_draw_area(widget, x, y, width, height) gtk_widget_queue_draw_area(widget, x, y, width, height);
+ #define gq_gtk_widget_show_all(widget) gtk_widget_show_all(widget)
+ #define gq_gtk_window_move(window, x, y) gtk_window_move(window, x, y)
+ #define gq_gtk_window_set_keep_above(window, setting) gtk_window_set_keep_above(window, setting)
+ #define gq_gtk_window_set_position(window, position) gtk_window_set_position(window, position)
-#if GTK_CHECK_VERSION(3,20,0)
-#define gtk_hbutton_box_new() gtk_button_box_new(GTK_ORIENTATION_HORIZONTAL)
+ void gq_gtk_container_add(GtkWidget *container, GtkWidget *widget);
#endif
#endif /* COMPAT_H */