[PATCH 1/3] Make subsurface compile with -DGSEAL_ENABLE

Linus Torvalds torvalds at linux-foundation.org
Sun Jan 27 16:51:34 PST 2013


From: Linus Torvalds <torvalds at linux-foundation.org>
Date: Sun, 27 Jan 2013 13:40:54 -0800
Subject: [PATCH 1/3] Make subsurface compile with -DGSEAL_ENABLE

This forces us to use the proper gtk accessor functions.  It may not be
worth it if people actually do the Qt conversion, but if we want to try
gtk3 at some point, this might help.

This all came about because I was trying to explain on G+ what an
immense pain this all was to even figure out, if you don't actually know
gtk at all.  Google and the gtk migration guide are almost useless, and
the gtk2 documentation itself actually uses the fields directly without
any accessor functions in several places.

Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
---

Ok, this is just a re-send. Now part of a three-patch series that actually 
makes things compile under gtk3.

The last patch actually does that gtk3 thing, but currently hard-codes the 
choice in the Makefile. The source code can be compiled either way, but 
the Makefile needs to make the choice one way or another, and I didn't 
make that automatic. 

You'll need to use -DCOMPILE_FOR_GTK3 in the compile flags if choosing 
gtk3 (as mentioned, that becomes the default), and obviously the libraries 
and header files have to be looked up using the right pkg-config.

 Makefile        |  2 +-
 callbacks-gtk.h |  2 +-
 equipment.c     |  4 ++--
 gps.c           |  2 +-
 gtk-gui.c       | 13 ++++++++-----
 print.c         |  2 +-
 statistics.c    |  2 +-
 7 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/Makefile b/Makefile
index 660c2ff8a8bb..8ff1dc447821 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION=2.1
 
 CC=gcc
-CFLAGS=-Wall -Wno-pointer-sign -g $(CLCFLAGS)
+CFLAGS=-Wall -Wno-pointer-sign -g $(CLCFLAGS) -DGSEAL_ENABLE
 INSTALL=install
 PKGCONFIG=pkg-config
 XML2CONFIG=xml2-config
diff --git a/callbacks-gtk.h b/callbacks-gtk.h
index 017a8c0ae3b7..08c159b4dfd9 100644
--- a/callbacks-gtk.h
+++ b/callbacks-gtk.h
@@ -10,7 +10,7 @@ static void name(GtkWidget *w, gpointer data) 			\
 static void name(GtkWidget *w, gpointer data)		\
 {							\
 	GtkWidget **entry = data;			\
-	option = GTK_TOGGLE_BUTTON(w)->active;		\
+	option = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w));	\
 	update_screen();				\
 	if (entry)					\
 		gtk_widget_set_sensitive(*entry, option);\
diff --git a/equipment.c b/equipment.c
index 7f69e5c70985..416c2c8538fd 100644
--- a/equipment.c
+++ b/equipment.c
@@ -942,7 +942,7 @@ static void cylinder_widget(GtkWidget *vbox, struct cylinder_widget *cylinder, G
 	cylinder->description = GTK_COMBO_BOX(widget);
 	g_signal_connect(widget, "changed", G_CALLBACK(cylinder_cb), cylinder);
 
-	entry = GTK_ENTRY(GTK_BIN(widget)->child);
+	entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(widget)));
 	g_signal_connect(entry, "activate", G_CALLBACK(cylinder_activate_cb), cylinder);
 
 	completion = gtk_entry_completion_new();
@@ -1028,7 +1028,7 @@ static void ws_widget(GtkWidget *vbox, struct ws_widget *ws_widget, GtkListStore
 	ws_widget->description = GTK_COMBO_BOX(widget);
 	g_signal_connect(widget, "changed", G_CALLBACK(weight_cb), ws_widget);
 
-	entry = GTK_ENTRY(GTK_BIN(widget)->child);
+	entry = GTK_ENTRY(gtk_bin_get_child(GTK_BIN(widget)));
 	g_signal_connect(entry, "activate", G_CALLBACK(weight_activate_cb), ws_widget);
 
 	completion = gtk_entry_completion_new();
diff --git a/gps.c b/gps.c
index 267b850847b8..b3c095db9c52 100644
--- a/gps.c
+++ b/gps.c
@@ -136,7 +136,7 @@ void show_map(OsmGpsMap *map, GtkWidget **window)
 		gtk_window_set_default_size(GTK_WINDOW(*window), 640, 480);
 		gtk_window_set_title(GTK_WINDOW(*window), _("Dives locations"));
 		gtk_container_set_border_width(GTK_CONTAINER(*window), 5);
-		GTK_WINDOW(*window)->allow_shrink = TRUE;
+		gtk_window_set_resizable(GTK_WINDOW(*window), TRUE);
 		gtk_container_add(GTK_CONTAINER(*window), GTK_WIDGET(map));
 		g_signal_connect(*window, "destroy", G_CALLBACK(on_close), (gpointer)window);
 		g_signal_connect(G_OBJECT(map), "scroll-event", G_CALLBACK(scroll_cb), NULL);
diff --git a/gtk-gui.c b/gtk-gui.c
index f6d81aca9eaa..9f76d31cd1b2 100644
--- a/gtk-gui.c
+++ b/gtk-gui.c
@@ -514,7 +514,7 @@ static void event_toggle(GtkWidget *w, gpointer _data)
 {
 	gboolean *plot_ev = _data;
 
-	*plot_ev = GTK_TOGGLE_BUTTON(w)->active;
+	*plot_ev = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w));
 }
 
 static void pick_default_file(GtkWidget *w, GtkButton *button)
@@ -584,7 +584,8 @@ static void preferences_dialog(GtkWidget *w, gpointer data)
 
 	/* create the notebook for the preferences and attach it to dialog */
 	notebook = gtk_notebook_new();
-	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), notebook, FALSE, FALSE, 5);
+	vbox = gtk_dialog_get_content_area(GTK_DIALOG(dialog));
+	gtk_box_pack_start(GTK_BOX(vbox), notebook, FALSE, FALSE, 5);
 
 	/* vbox that holds the first notebook page */
 	vbox = gtk_vbox_new(FALSE, 6);
@@ -1663,16 +1664,18 @@ static gboolean expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer
 {
 	int i = 0;
 	struct dive *dive = current_dive;
+	GtkAllocation allocation;
 	static struct graphics_context gc = { .printer = 0 };
 
 	/* the drawing area gives TOTAL width * height - x,y is used as the topx/topy offset
 	 * so effective drawing area is width-2x * height-2y */
-	gc.drawing_area.width = widget->allocation.width;
-	gc.drawing_area.height = widget->allocation.height;
+	gtk_widget_get_allocation(widget, &allocation);
+	gc.drawing_area.width = allocation.width;
+	gc.drawing_area.height = allocation.height;
 	gc.drawing_area.x = MIN(50,gc.drawing_area.width / 20.0);
 	gc.drawing_area.y = MIN(50,gc.drawing_area.height / 20.0);
 
-	gc.cr = gdk_cairo_create(widget->window);
+	gc.cr = gdk_cairo_create(gtk_widget_get_window(widget));
 	g_object_set(widget, "has-tooltip", TRUE, NULL);
 	g_signal_connect(widget, "query-tooltip", G_CALLBACK(profile_tooltip), &gc);
 	init_profile_background(&gc);
diff --git a/print.c b/print.c
index c2a71a1e4da7..eb6c2af79bee 100644
--- a/print.c
+++ b/print.c
@@ -877,7 +877,7 @@ OPTIONCALLBACK(set_oneperpage, type, ONEPERPAGE)
 #define OPTIONSELECTEDCALLBACK(name, option) \
 static void name(GtkWidget *w, gpointer data) \
 { \
-	option = GTK_TOGGLE_BUTTON(w)->active; \
+	option = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)); \
 }
 
 OPTIONSELECTEDCALLBACK(print_selection_toggle, print_options.print_selected)
diff --git a/statistics.c b/statistics.c
index 2efc3947a1d8..794678bc2d3f 100644
--- a/statistics.c
+++ b/statistics.c
@@ -395,7 +395,7 @@ void show_yearly_stats()
 	gtk_window_set_default_size(GTK_WINDOW(window), 640, 480);
 	gtk_window_set_title(GTK_WINDOW(window), _("Yearly Statistics"));
 	gtk_container_set_border_width(GTK_CONTAINER(window), 5);
-	GTK_WINDOW(window)->allow_shrink = TRUE;
+	gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
 	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 	gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_ETCHED_IN);
 
-- 
1.8.1.1.271.g02f55e6



More information about the subsurface mailing list