ag_db_save_identical can now compare based only on chart-related data
This way the chart won’t get recalculated on a name change.
This commit is contained in:
		
							
								
								
									
										10
									
								
								src/ag-db.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/ag-db.c
									
									
									
									
									
								
							| @@ -1060,7 +1060,7 @@ string_collate(const gchar *str1, const gchar *str2) | |||||||
|  *          with string_collate()), FALSE otherwise |  *          with string_collate()), FALSE otherwise | ||||||
|  */ |  */ | ||||||
| gboolean | gboolean | ||||||
| ag_db_save_identical(const AgDbSave *a, const AgDbSave *b) | ag_db_save_identical(const AgDbSave *a, const AgDbSave *b, gboolean chart_only) | ||||||
| { | { | ||||||
|     if (a == b) { |     if (a == b) { | ||||||
|         return TRUE; |         return TRUE; | ||||||
| @@ -1070,15 +1070,15 @@ ag_db_save_identical(const AgDbSave *a, const AgDbSave *b) | |||||||
|         return FALSE; |         return FALSE; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (string_collate(a->name, b->name) != 0) { |     if (!chart_only && string_collate(a->name, b->name) != 0) { | ||||||
|         return FALSE; |         return FALSE; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (string_collate(a->country, b->country) != 0) { |     if (!chart_only && string_collate(a->country, b->country) != 0) { | ||||||
|         return FALSE; |         return FALSE; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (string_collate(a->city, b->city) != 0) { |     if (!chart_only && string_collate(a->city, b->city) != 0) { | ||||||
|         return FALSE; |         return FALSE; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -1126,7 +1126,7 @@ ag_db_save_identical(const AgDbSave *a, const AgDbSave *b) | |||||||
|         return FALSE; |         return FALSE; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     if (string_collate(a->note, b->note) != 0) { |     if (!chart_only && string_collate(a->note, b->note) != 0) { | ||||||
|         return FALSE; |         return FALSE; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -68,7 +68,9 @@ GList *ag_db_get_chart_list(AgDb *db, GError **err); | |||||||
|  |  | ||||||
| AgDbSave *ag_db_get_chart_data_by_id(AgDb *db, guint row_id, GError **err); | AgDbSave *ag_db_get_chart_data_by_id(AgDb *db, guint row_id, GError **err); | ||||||
|  |  | ||||||
| gboolean ag_db_save_identical(const AgDbSave *a, const AgDbSave *b); | gboolean ag_db_save_identical(const AgDbSave *a, | ||||||
|  |                               const AgDbSave *b, | ||||||
|  |                               gboolean chart_only); | ||||||
|  |  | ||||||
| #define AG_DB_ERROR (ag_db_error_quark()) | #define AG_DB_ERROR (ag_db_error_quark()) | ||||||
| GQuark ag_db_error_quark(void); | GQuark ag_db_error_quark(void); | ||||||
|   | |||||||
| @@ -108,7 +108,7 @@ ag_window_can_close(AgWindow *window, gboolean display_dialog) | |||||||
|         save_data = ag_chart_get_db_save(priv->chart, db_id); |         save_data = ag_chart_get_db_save(priv->chart, db_id); | ||||||
|  |  | ||||||
|         if ( |         if ( | ||||||
|                     !ag_db_save_identical(priv->saved_data, save_data) |                     !ag_db_save_identical(priv->saved_data, save_data, FALSE) | ||||||
|                     || !(priv->saved_data) |                     || !(priv->saved_data) | ||||||
|                     || (priv->saved_data->db_id == -1) |                     || (priv->saved_data->db_id == -1) | ||||||
|                 ) { |                 ) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user