Complete.Org: Mailing Lists: Archives: freeciv-dev: September 2004:
[Freeciv-Dev] (PR#10117) focus_tile for gui-ftwl
Home

[Freeciv-Dev] (PR#10117) focus_tile for gui-ftwl

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: undisclosed-recipients: ;
Subject: [Freeciv-Dev] (PR#10117) focus_tile for gui-ftwl
From: "Jason Short" <jdorje@xxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 14 Sep 2004 19:08:16 -0700
Reply-to: rt@xxxxxxxxxxx

<URL: http://rt.freeciv.org/Ticket/Display.html?id=10117 >

This patch adds the focus_tile code into gui-ftwl/mapview.c.

It fixes several bugs in the original focus_tile code (in PR#9479):

- Fix handling of (-1,-1) by checking is_normal rather than is_real.

- Clear the focus tile when disconnecting from a server.

jason

Index: client/gui-ftwl/dialogs.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-ftwl/dialogs.c,v
retrieving revision 1.2
diff -u -r1.2 dialogs.c
--- client/gui-ftwl/dialogs.c   10 Sep 2004 21:20:52 -0000      1.2
+++ client/gui-ftwl/dialogs.c   15 Sep 2004 02:07:15 -0000
@@ -29,6 +29,7 @@
 #include "widget.h"
 
 #include "dialogs.h"
+#include "mapview.h"
 
 static struct sw_widget *nations_window;
 #if 0
@@ -386,4 +387,5 @@
 void popdown_all_game_dialogs(void)
 {
   /* PORTME */
+  clear_focus_tile();
 }
Index: client/gui-ftwl/mapview.c
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-ftwl/mapview.c,v
retrieving revision 1.2
diff -u -r1.2 mapview.c
--- client/gui-ftwl/mapview.c   14 Sep 2004 22:35:24 -0000      1.2
+++ client/gui-ftwl/mapview.c   15 Sep 2004 02:07:16 -0000
@@ -1607,3 +1607,51 @@
   /* PORTME */
 }
 
+static struct map_position focus_tile = { -1, -1 };
+
+/****************************************************************************
+  Set the position of the focus tile, and update the mapview.
+****************************************************************************/
+void set_focus_tile(int x, int y)
+{
+  struct map_position old = focus_tile;
+
+  CHECK_MAP_POS(x, y);
+  focus_tile.x = x;
+  focus_tile.y = y;
+
+  if (old.x >= 0) {
+    refresh_tile_mapcanvas(old.x, old.y, TRUE);
+  }
+  refresh_tile_mapcanvas(focus_tile.x, focus_tile.y, TRUE);
+}
+
+/****************************************************************************
+  Clear the focus tile, and update the mapview.
+****************************************************************************/
+void clear_focus_tile(void)
+{
+  struct map_position old = focus_tile;
+
+  focus_tile.x = -1;
+  focus_tile.y = -1;
+
+  if (map_exists() && is_normal_map_pos(old.x, old.x)) {
+    refresh_tile_mapcanvas(old.x, old.y, TRUE);
+  }
+}
+
+/****************************************************************************
+  Find the focus tile.  Returns FALSE if there is no focus tile.
+****************************************************************************/
+bool get_focus_tile(int *x, int *y)
+{
+  if (focus_tile->x < 0) {
+    *x = *y = -1;
+    return FALSE;
+  } else {
+    *x = focus_tile.x;
+    *y = focus_tile.y;
+    reuturn TRUE;
+  }
+}
Index: client/gui-ftwl/mapview.h
===================================================================
RCS file: /home/freeciv/CVS/freeciv/client/gui-ftwl/mapview.h,v
retrieving revision 1.1
diff -u -r1.1 mapview.h
--- client/gui-ftwl/mapview.h   29 Jul 2004 14:10:13 -0000      1.1
+++ client/gui-ftwl/mapview.h   15 Sep 2004 02:07:16 -0000
@@ -18,4 +18,8 @@
 
 void mapview_update_actions(void);
 
+void set_focus_tile(int x, int y);
+void clear_focus_tile(void);
+bool get_focus_tile(int *x, int *y);
+
 #endif                         /* FC__MAPVIEW_H */

[Prev in Thread] Current Thread [Next in Thread]
  • [Freeciv-Dev] (PR#10117) focus_tile for gui-ftwl, Jason Short <=