Author: cazfi
Date: Sun May 15 14:10:50 2016
New Revision: 32719

URL: http://svn.gna.org/viewcvs/freeciv?rev=32719&view=rev
Log:
Free gtk3-client editbar icons on exit

See bug #24634

Modified:
    branches/S2_5/client/gui-gtk-3.0/editgui.c
    branches/S2_5/client/gui-gtk-3.0/editgui.h
    branches/S2_5/client/gui-gtk-3.0/gui_main.c

Modified: branches/S2_5/client/gui-gtk-3.0/editgui.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-gtk-3.0/editgui.c?rev=32719&r1=32718&r2=32719&view=diff
==============================================================================
--- branches/S2_5/client/gui-gtk-3.0/editgui.c  (original)
+++ branches/S2_5/client/gui-gtk-3.0/editgui.c  Sun May 15 14:10:50 2016
@@ -825,6 +825,19 @@
 }
 
 /****************************************************************************
+  Clears all stores from the editbar.
+****************************************************************************/
+static void clear_tool_stores(struct editbar *eb)
+{
+  clear_tool_store(eb->tool_selectors[ETT_TERRAIN]->store);
+  clear_tool_store(eb->tool_selectors[ETT_TERRAIN_RESOURCE]->store);
+  clear_tool_store(eb->tool_selectors[ETT_TERRAIN_SPECIAL]->store);
+  clear_tool_store(eb->tool_selectors[ETT_ROAD]->store);
+  clear_tool_store(eb->tool_selectors[ETT_MILITARY_BASE]->store);
+  clear_tool_store(eb->tool_selectors[ETT_UNIT]->store);
+}
+
+/****************************************************************************
   Reload all tool value data from the tileset for the given toolbar.
 ****************************************************************************/
 static void editbar_reload_tileset(struct editbar *eb)
@@ -839,11 +852,12 @@
     return;
   }
 
+  clear_tool_stores(eb);
+
   /* Reload terrains. */
 
   tvs = eb->tool_selectors[ETT_TERRAIN];
   store = tvs->store;
-  clear_tool_store(store);
 
   terrain_type_iterate(pterrain) {
     gtk_list_store_append(store, &iter);
@@ -863,7 +877,6 @@
 
   tvs = eb->tool_selectors[ETT_TERRAIN_RESOURCE];
   store = tvs->store;
-  clear_tool_store(store);
 
   resource_type_iterate(presource) {
     gtk_list_store_append(store, &iter);
@@ -889,7 +902,6 @@
 
   tvs = eb->tool_selectors[ETT_TERRAIN_SPECIAL];
   store = tvs->store;
-  clear_tool_store(store);
 
   tile_special_type_iterate(special) {
     gtk_list_store_append(store, &iter);
@@ -912,7 +924,6 @@
 
   tvs = eb->tool_selectors[ETT_ROAD];
   store = tvs->store;
-  clear_tool_store(store);
 
   road_type_iterate(proad) {
     int id;
@@ -935,7 +946,6 @@
 
   tvs = eb->tool_selectors[ETT_MILITARY_BASE];
   store = tvs->store;
-  clear_tool_store(store);
 
   base_type_iterate(pbase) {
     int id;
@@ -959,7 +969,6 @@
 
   tvs = eb->tool_selectors[ETT_UNIT];
   store = tvs->store;
-  clear_tool_store(store);
 
   unit_type_iterate(putype) {
     gtk_list_store_append(store, &iter);
@@ -1929,6 +1938,16 @@
 }
 
 /****************************************************************************
+  Free everything allocated for the editgui.
+****************************************************************************/
+void editgui_free(void)
+{
+  struct editbar *eb = editgui_get_editbar();
+
+  clear_tool_stores(eb);
+}
+
+/****************************************************************************
   Return a pointer to the editor info box embedded in the client's GUI.
 ****************************************************************************/
 struct editinfobox *editgui_get_editinfobox(void)

Modified: branches/S2_5/client/gui-gtk-3.0/editgui.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-gtk-3.0/editgui.h?rev=32719&r1=32718&r2=32719&view=diff
==============================================================================
--- branches/S2_5/client/gui-gtk-3.0/editgui.h  (original)
+++ branches/S2_5/client/gui-gtk-3.0/editgui.h  Sun May 15 14:10:50 2016
@@ -1,4 +1,4 @@
-/********************************************************************** 
+/***********************************************************************
  Freeciv - Copyright (C) 2005 - The Freeciv Project
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -61,6 +61,7 @@
 };
 
 void editgui_create_widgets(void);
+void editgui_free(void);
 struct editbar *editgui_get_editbar(void);
 struct editinfobox *editgui_get_editinfobox(void);
 

Modified: branches/S2_5/client/gui-gtk-3.0/gui_main.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/client/gui-gtk-3.0/gui_main.c?rev=32719&r1=32718&r2=32719&view=diff
==============================================================================
--- branches/S2_5/client/gui-gtk-3.0/gui_main.c (original)
+++ branches/S2_5/client/gui-gtk-3.0/gui_main.c Sun May 15 14:10:50 2016
@@ -1791,6 +1791,7 @@
   diplomacy_dialog_done();
   cma_fe_done();
   free_unit_table();
+  editgui_free();
   gtk_widget_destroy(toplevel_tabs);
   message_buffer = NULL; /* Result of destruction of everything */
   tileset_free_tiles(tileset);


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to