[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Fix for main map scrollbars
- From: Daniel Burrows <Daniel_Burrows brown edu>
- To: freeciv-dev freeciv org
- Cc: gtk-app-devel-list redhat com
- Subject: Fix for main map scrollbars
- Date: Sun, 1 Aug 1999 21:49:21 -0400
Hello,
A few days ago I posted a message on freeciv-dev about the problem of getting
the scrollbars to correctly reposition themselves when using the GTKStep
theme engine. I'm still working on the more general solution to the problem
(making a 'real' Freeciv map widget, perhaps derived from the Viewport class?)
but I think I have an interim solution. It seems to generate a gratuitous
GTK+ warning, I'm not sure what to do about this :/ -- but everything looks to
me like it works fine (and the scrollbars are in the right place! :) )
This patch removes the explicit creation of scrollbars and instead creates a
scrolled window, giving it the adjustments used to fiddle with the map canvas'
location. We then add the map canvas directly to the scrolled window (instead
of using gtk_scrolled_window_add_with_viewport). This works beautifully.
I'm crossposting this to gtk-app-devel-list because (a) there might be
someone there puzzling with the same problem and (b) I'd like to know if there's
anything horribly broken with this system and I think they may be able to yell
at me authoritatively if I've screwed up. :) If not, I would like to ask whether
this could be made the standard way to dock scrollbars next to a widget,
depricating direct packing of the scrollbar widgets (the warning should probably
be removed if this is done..) It's not that difficult and seems more general
to me.
Daniel
--
Whoever fights monsters should see to it that in the process he does not
become a monster. And when you look into an abyss, the abyss also looks
into you.
-- Friedrich Nietzsche
diff -ru freeciv-1.8.1/client/gui-gtk/gui_main.c freeciv-1.8.1.scrollfix/client/gui-gtk/gui_main.c
--- freeciv-1.8.1/client/gui-gtk/gui_main.c Sat Jul 3 01:26:51 1999
+++ freeciv-1.8.1.scrollfix/client/gui-gtk/gui_main.c Sun Aug 1 21:33:36 1999
@@ -137,7 +137,7 @@
GtkWidget * text_scrollbar;
GtkWidget * inputline;
-GtkWidget * map_horizontal_scrollbar, *map_vertical_scrollbar;
+GtkWidget * map_scrolledwin;
gint gdk_input_id;
GtkStyle * notify_dialog_style;
@@ -634,10 +634,6 @@
gtk_box_pack_start( GTK_BOX( vbox2 ), table, TRUE, TRUE, 0 );
frame = gtk_frame_new( NULL );
- gtk_table_attach(GTK_TABLE(table), frame,
- 0, 1, 0, 1,
- GTK_EXPAND|GTK_SHRINK|GTK_FILL,
- GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0 );
map_canvas = gtk_drawing_area_new();
@@ -648,13 +644,13 @@
gtk_drawing_area_size(GTK_DRAWING_AREA(map_canvas), 510, 300);
gtk_container_add(GTK_CONTAINER(frame), map_canvas);
- map_horizontal_scrollbar = gtk_hscrollbar_new(NULL);
- gtk_table_attach(GTK_TABLE(table), map_horizontal_scrollbar, 0, 1, 1, 2,
- GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
-
- map_vertical_scrollbar = gtk_vscrollbar_new(NULL);
- gtk_table_attach(GTK_TABLE(table), map_vertical_scrollbar, 1, 2, 0, 1,
- 0, GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0);
+ map_scrolledwin=gtk_scrolled_window_new(NULL,NULL);
+ gtk_table_attach(GTK_TABLE(table), map_scrolledwin, 0, 1, 1, 2,
+ GTK_EXPAND|GTK_SHRINK|GTK_FILL,
+ GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0);
+
+ gtk_container_add(GTK_CONTAINER(map_scrolledwin),
+ frame);
/* Event signals */
gtk_signal_connect( GTK_OBJECT( map_canvas ), "expose_event",
diff -ru freeciv-1.8.1/client/gui-gtk/gui_main.c~ freeciv-1.8.1.scrollfix/client/gui-gtk/gui_main.c~
--- freeciv-1.8.1/client/gui-gtk/gui_main.c~ Sat Jul 3 01:26:51 1999
+++ freeciv-1.8.1.scrollfix/client/gui-gtk/gui_main.c~ Sun Aug 1 21:27:18 1999
@@ -137,7 +137,7 @@
GtkWidget * text_scrollbar;
GtkWidget * inputline;
-GtkWidget * map_horizontal_scrollbar, *map_vertical_scrollbar;
+GtkWidget * map_scrolledwin;
gint gdk_input_id;
GtkStyle * notify_dialog_style;
@@ -634,10 +634,6 @@
gtk_box_pack_start( GTK_BOX( vbox2 ), table, TRUE, TRUE, 0 );
frame = gtk_frame_new( NULL );
- gtk_table_attach(GTK_TABLE(table), frame,
- 0, 1, 0, 1,
- GTK_EXPAND|GTK_SHRINK|GTK_FILL,
- GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0 );
map_canvas = gtk_drawing_area_new();
@@ -648,13 +644,13 @@
gtk_drawing_area_size(GTK_DRAWING_AREA(map_canvas), 510, 300);
gtk_container_add(GTK_CONTAINER(frame), map_canvas);
- map_horizontal_scrollbar = gtk_hscrollbar_new(NULL);
- gtk_table_attach(GTK_TABLE(table), map_horizontal_scrollbar, 0, 1, 1, 2,
- GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
-
- map_vertical_scrollbar = gtk_vscrollbar_new(NULL);
- gtk_table_attach(GTK_TABLE(table), map_vertical_scrollbar, 1, 2, 0, 1,
- 0, GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0);
+ map_scrolledwin=gtk_scrolled_window_new(NULL,NULL);
+ gtk_table_attach(GTK_TABLE(table), map_scrolledwin, 0, 1, 1, 2,
+ GTK_EXPAND|GTK_SHRINK|GTK_FILL,
+ GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0);
+
+ gtk_container_add(GTK_CONTAINER(map_scrolledwin),
+ map_canvas);
/* Event signals */
gtk_signal_connect( GTK_OBJECT( map_canvas ), "expose_event",
diff -ru freeciv-1.8.1/client/gui-gtk/mapview.c freeciv-1.8.1.scrollfix/client/gui-gtk/mapview.c
--- freeciv-1.8.1/client/gui-gtk/mapview.c Tue Jun 15 07:40:34 1999
+++ freeciv-1.8.1.scrollfix/client/gui-gtk/mapview.c Sun Aug 1 21:23:18 1999
@@ -67,7 +67,7 @@
extern GtkWidget * map_canvas; /* GtkDrawingArea */
extern GtkWidget * overview_canvas; /* GtkDrawingArea */
-extern GtkWidget * map_vertical_scrollbar, *map_horizontal_scrollbar;
+extern GtkWidget * map_scrolledwin;
/* this pixmap acts as a backing store for the map_canvas widget */
extern GdkPixmap * map_canvas_store;
@@ -851,10 +851,10 @@
map_canvas_store_twidth, map_canvas_store_twidth);
map_vadj=gtk_adjustment_new(-1, 0, map.ysize, 1,
map_canvas_store_theight, map_canvas_store_theight);
- gtk_range_set_adjustment(GTK_RANGE(map_horizontal_scrollbar),
- GTK_ADJUSTMENT(map_hadj));
- gtk_range_set_adjustment(GTK_RANGE(map_vertical_scrollbar),
- GTK_ADJUSTMENT(map_vadj));
+ gtk_scrolled_window_set_hadjustment(GTK_SCROLLED_WINDOW(map_scrolledwin),
+ GTK_ADJUSTMENT(map_hadj));
+ gtk_scrolled_window_set_vadjustment(GTK_SCROLLED_WINDOW(map_scrolledwin),
+ GTK_ADJUSTMENT(map_vadj));
gtk_signal_connect(GTK_OBJECT(map_hadj), "value_changed",
GTK_SIGNAL_FUNC(scrollbar_jump_callback), (gpointer)TRUE);
Only in freeciv-1.8.1.scrollfix/client/gui-gtk: mapview.c~
Only in freeciv-1.8.1.scrollfix/client/gui-xaw: Makefile
Only in freeciv-1.8.1.scrollfix/client/include: Makefile
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]