diff --git a/src/gfx.c b/src/gfx.c index 7eb2e58..1aeecce 100644 --- a/src/gfx.c +++ b/src/gfx.c @@ -355,14 +355,21 @@ void draw_next_balls(void) { } /* Refill the screen from the backing pixmap */ -gint expose_event (GtkWidget *widget, GdkEventExpose *event) +gboolean boardw_draw_event (GtkWidget *widget, gpointer compat, gpointer data) { +#if GTK_MAJOR_VERSION >= 3 + cairo_t * cr = (cairo_t *) compat; + GdkRectangle rect; + GdkRectangle * area = ▭ + gdk_cairo_get_clip_rectangle (cr, area); +#else // gtk2, espose_ event + GdkEventExpose * event = (GdkEventExpose *) compat; cairo_t * cr = gdk_cairo_create (gtk_widget_get_window (widget)); GdkRectangle * area = &(event->area); +#endif - GtkAllocation a; - gtk_widget_get_allocation (widget, &a); - if (area->width == a.width) { + int width = gtk_widget_get_allocated_width (widget); + if (area->width == width) { cairo_set_source_surface (cr, pixsurf, 0, 0); cairo_paint (cr); } else { @@ -373,7 +380,10 @@ gint expose_event (GtkWidget *widget, GdkEventExpose *event) cairo_fill (cr); //cairo_restore (cr); } + +#if GTK_MAJOR_VERSION == 2 cairo_destroy (cr); +#endif return FALSE; } diff --git a/src/gfx.h b/src/gfx.h index 1ee969f..9d923fc 100644 --- a/src/gfx.h +++ b/src/gfx.h @@ -18,7 +18,7 @@ void redraw_ball(gint x, gint y); void redraw_pointer(void); void draw_board(void); /* Refill the screen from the backing pixmap */ -gint expose_event(GtkWidget *widget, GdkEventExpose *event); +gboolean boardw_draw_event (GtkWidget *widget, gpointer compat, gpointer data); void remake_board(gint numoldchilds, gboolean isnextvalid); void reinit_board(gint *newboard, gint *newnext, gint score, gint oldnext); diff --git a/src/gtkutils.c b/src/gtkutils.c index c7c2b37..9a99bd5 100644 --- a/src/gtkutils.c +++ b/src/gtkutils.c @@ -7,10 +7,11 @@ */ #include #include +#include "gtkcompat.h" gboolean ut_key_pressed_cb(GtkWidget *widget, GdkEventKey *event) { - if(widget && event && event->keyval == GDK_Escape) { + if(widget && event && event->keyval == GDK_KEY_Escape) { gtk_widget_destroy(widget); return TRUE; } @@ -73,7 +74,7 @@ GtkWidget * gtkutil_frame_vbox (char * label, GtkWidget * parent_box) frame = gtk_frame_new (label); gtk_box_pack_start (GTK_BOX (parent_box), frame, FALSE, FALSE, 0); - GtkWidget * frame_vbox = gtk_vbox_new (FALSE, 5); + GtkWidget * frame_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5); gtk_container_add (GTK_CONTAINER (frame), frame_vbox); /* padding */ gtk_container_set_border_width (GTK_CONTAINER (frame_vbox), 5); @@ -112,7 +113,7 @@ GtkWidget *ut_spin_button_new(gchar *label, gint min, gint max, gint val, GtkWid GtkAdjustment *adj; GtkWidget *button, *hbox, *labelw; - hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(parent), hbox, TRUE, TRUE, 0); labelw = gtk_label_new(label); diff --git a/src/halloffame.c b/src/halloffame.c index 5a965de..6a25e77 100644 --- a/src/halloffame.c +++ b/src/halloffame.c @@ -58,7 +58,6 @@ void show_hall_of_fame (GtkWidget *widget, gpointer data, struct score_board b[1 } tv = gtk_tree_view_new_with_model (GTK_TREE_MODEL(store)); - gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(tv), TRUE); gtk_tree_selection_set_mode (gtk_tree_view_get_selection(GTK_TREE_VIEW(tv)), GTK_SELECTION_BROWSE); g_object_unref (G_OBJECT(store)); renderer = gtk_cell_renderer_text_new (); diff --git a/src/mainmenu.c b/src/mainmenu.c index 2b34046..c9131ce 100644 --- a/src/mainmenu.c +++ b/src/mainmenu.c @@ -76,7 +76,6 @@ void menu_get_main(GtkWidget *window, GtkWidget **menubar) gtk_action_group_set_translate_func(_action_group, _menu_translate, NULL, NULL); gtk_action_group_add_actions(_action_group, _menu_entries, G_N_ELEMENTS(_menu_entries), window); _ui_manager = gtk_ui_manager_new(); - gtk_ui_manager_set_add_tearoffs(_ui_manager, 1); gtk_ui_manager_insert_action_group(_ui_manager, _action_group, 0); accel_group = gtk_ui_manager_get_accel_group(_ui_manager); gtk_window_add_accel_group(GTK_WINDOW(window), accel_group); diff --git a/src/mainwin.c b/src/mainwin.c index 50d756e..268e3f5 100644 --- a/src/mainwin.c +++ b/src/mainwin.c @@ -107,26 +107,26 @@ gint _user_action_event(GtkWidget *w, GdkEvent *ev) } if (ev->type == GDK_KEY_PRESS) { - if (ev->key.keyval == GDK_Left || ev->key.keyval == GDK_KP_Left) { + if (ev->key.keyval == GDK_KEY_Left || ev->key.keyval == GDK_KEY_KP_Left) { move_pointer(DIR_LEFT); - } else if (ev->key.keyval == GDK_Right || ev->key.keyval == GDK_KP_Right) { + } else if (ev->key.keyval == GDK_KEY_Right || ev->key.keyval == GDK_KEY_KP_Right) { move_pointer(DIR_RIGHT); - } else if (ev->key.keyval == GDK_Up || ev->key.keyval == GDK_KP_Up) { + } else if (ev->key.keyval == GDK_KEY_Up || ev->key.keyval == GDK_KEY_KP_Up) { move_pointer(DIR_UP); - } else if (ev->key.keyval == GDK_Down || ev->key.keyval == GDK_KP_Down) { + } else if (ev->key.keyval == GDK_KEY_Down || ev->key.keyval == GDK_KEY_KP_Down) { move_pointer(DIR_DOWN); - } else if (ev->key.keyval == GDK_KP_Home) { + } else if (ev->key.keyval == GDK_KEY_KP_Home) { move_pointer(DIR_UP_LEFT); - } else if (ev->key.keyval == GDK_KP_Page_Up) { + } else if (ev->key.keyval == GDK_KEY_KP_Page_Up) { move_pointer(DIR_UP_RIGHT); - } else if (ev->key.keyval == GDK_KP_End) { + } else if (ev->key.keyval == GDK_KEY_KP_End) { move_pointer(DIR_DOWN_LEFT); - } else if (ev->key.keyval == GDK_KP_Page_Down) { + } else if (ev->key.keyval == GDK_KEY_KP_Page_Down) { move_pointer(DIR_DOWN_RIGHT); - } else if (ev->key.keyval == GDK_Return || - ev->key.keyval == GDK_KP_Space || - ev->key.keyval == GDK_KP_Enter || - ev->key.keyval == GDK_space) { + } else if (ev->key.keyval == GDK_KEY_Return || + ev->key.keyval == GDK_KEY_KP_Space || + ev->key.keyval == GDK_KEY_KP_Enter || + ev->key.keyval == GDK_KEY_space) { if (is_actions_locked()) { return FALSE; } @@ -175,36 +175,37 @@ void mw_create(gint da_width, gint da_height) g_error_free (error); } - vbox = gtk_vbox_new (FALSE, 5); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5); gtk_container_add (GTK_CONTAINER(mainwin), vbox); menu_get_main (mainwin, &menubar); menu_set_sensitive_undo (FALSE); gtk_box_pack_start (GTK_BOX(vbox), menubar, FALSE, TRUE, 0); - hbox = gtk_hbox_new (FALSE, 0); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); _hi_score_label = gtk_label_new (""); gtk_box_pack_start (GTK_BOX(hbox), _hi_score_label, FALSE, FALSE, 5); _user_score_label = gtk_label_new(""); gtk_box_pack_end (GTK_BOX(hbox), _user_score_label, FALSE, FALSE, 5); gtk_box_pack_start (GTK_BOX(vbox), GTK_WIDGET(hbox), FALSE, FALSE, 0); - _small_balls_box = gtk_hbox_new(TRUE, 0); + _small_balls_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_box_set_homogeneous (GTK_BOX (_small_balls_box), TRUE); gtk_box_pack_start (GTK_BOX(hbox), _small_balls_box, TRUE, FALSE, 0); - hbox1 = gtk_hbox_new (FALSE, 0); + hbox1 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); timer_label = gtk_label_new (NULL); gtk_box_pack_start (GTK_BOX(hbox1), timer_label, TRUE, TRUE, 5); g_timeout_add(250, _countdown_timer, timer_label); gtk_box_pack_start (GTK_BOX(vbox), GTK_WIDGET(hbox1), FALSE, FALSE, 0); - drawing_area_box = gtk_hbox_new(FALSE, 0); + drawing_area_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX(vbox), drawing_area_box, FALSE, FALSE, 10); _drawing_area = gtk_drawing_area_new(); gtk_widget_set_size_request (_drawing_area, da_width, da_height); gtk_box_pack_start (GTK_BOX(drawing_area_box), _drawing_area, TRUE, FALSE, 10); gtk_widget_set_events (_drawing_area, GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_KEY_PRESS_MASK | GDK_POINTER_MOTION_MASK); - g_signal_connect (G_OBJECT(_drawing_area), "expose_event", G_CALLBACK(expose_event), NULL); + g_signal_connect (G_OBJECT(_drawing_area), GTKCOMPAT_DRAW_SIGNAL, G_CALLBACK(boardw_draw_event), NULL); g_signal_connect (G_OBJECT(_drawing_area), "button_press_event", G_CALLBACK(_user_action_event), NULL); g_signal_connect (G_OBJECT(_drawing_area), "motion_notify_event", G_CALLBACK(_user_action_event), NULL); /* FIXME: imho catching keypress on whole window is stupid... */ diff --git a/src/preferences.c b/src/preferences.c index b1a26cc..f08e378 100644 --- a/src/preferences.c +++ b/src/preferences.c @@ -163,8 +163,8 @@ void preferences_dialog (void) theme_scrolled_window = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(theme_scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(theme_scrolled_window), GTK_SHADOW_ETCHED_IN); gtk_box_pack_start (GTK_BOX(vbox), theme_scrolled_window, FALSE, FALSE, 5); + gtk_widget_set_size_request (theme_scrolled_window, -1, 150); store = gtk_list_store_new (1, G_TYPE_STRING); for (i = 0, st = 0; themelist[i] != NULL; i++) { @@ -178,9 +178,7 @@ void preferences_dialog (void) g_free (themelist); buttons[PR_THEME_LIST] = gtk_tree_view_new_with_model (GTK_TREE_MODEL(store)); - gtk_widget_set_size_request (buttons[PR_THEME_LIST], -1, 150); g_object_unref (G_OBJECT(store)); - gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(buttons[PR_THEME_LIST]), TRUE); gtk_tree_view_set_search_column (GTK_TREE_VIEW(buttons[PR_THEME_LIST]), 0); gtk_tree_selection_set_mode (gtk_tree_view_get_selection(GTK_TREE_VIEW(buttons[PR_THEME_LIST])), GTK_SELECTION_BROWSE); gtk_container_add (GTK_CONTAINER(theme_scrolled_window), buttons[PR_THEME_LIST]); diff --git a/src/rules.c b/src/rules.c index 8d09a51..5b7eb67 100644 --- a/src/rules.c +++ b/src/rules.c @@ -20,7 +20,7 @@ void show_rules (GtkWidget *widget, gpointer data) dialog = gtkutil_dialog_new (_("Rules"), main_window, TRUE, &main_vbox); vbox = gtkutil_frame_vbox (_("Rules"), main_vbox); - hbox = gtk_hbox_new (FALSE, 0); + hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0); label = gtk_label_new (_("The standard play area of GtkBalls is a 9x9\n" \ diff --git a/src/savedialog.c b/src/savedialog.c index 217ed01..ed8f847 100644 --- a/src/savedialog.c +++ b/src/savedialog.c @@ -247,7 +247,6 @@ void save_load_game_dialog(gboolean is_save) free_gamelist(gamelist, num); treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL(store)); - gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(treeview), TRUE); gtk_tree_view_set_search_column (GTK_TREE_VIEW(treeview), 0); gtk_tree_selection_set_mode (gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)), GTK_SELECTION_BROWSE); g_signal_connect (G_OBJECT(gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview))), @@ -270,18 +269,16 @@ void save_load_game_dialog(gboolean is_save) column = gtk_tree_view_column_new_with_attributes (_("Score"), renderer, "text", 2, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column); - if (iter.stamp == store->stamp) { - if (is_save) { - path = gtk_tree_model_get_path (GTK_TREE_MODEL(store), &iter); - } else { - path = gtk_tree_path_new_from_string ("0"); - } - if (path) { - gtk_tree_selection_select_path (gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)), path); - gtk_tree_view_set_cursor (GTK_TREE_VIEW(treeview), path, NULL, FALSE); - gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(treeview), path, NULL, TRUE, 0, 0); - gtk_tree_path_free (path); - } + if (is_save) { + path = gtk_tree_model_get_path (GTK_TREE_MODEL(store), &iter); + } else { + path = gtk_tree_path_new_from_string ("0"); + } + if (path) { + gtk_tree_selection_select_path (gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)), path); + gtk_tree_view_set_cursor (GTK_TREE_VIEW(treeview), path, NULL, FALSE); + gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW(treeview), path, NULL, TRUE, 0, 0); + gtk_tree_path_free (path); } g_object_unref (G_OBJECT(store));