make gtk3 port compile

This commit is contained in:
wdlkmpx 2021-01-21 14:32:10 +08:00
parent aab540c9ea
commit 355e791147
9 changed files with 50 additions and 45 deletions

View File

@ -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;
}

View File

@ -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);

View File

@ -7,10 +7,11 @@
*/
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#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);

View File

@ -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 ();

View File

@ -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);

View File

@ -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... */

View File

@ -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]);

View File

@ -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" \

View File

@ -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));