fixed goto case dialog
authorFriedrich Beckmann <friedrich.beckmann@gmx.de>
Sun, 7 Jun 2020 07:08:01 +0000 (09:08 +0200)
committerFriedrich Beckmann <friedrich.beckmann@gmx.de>
Sun, 7 Jun 2020 07:08:01 +0000 (09:08 +0200)
The goto case dialog did not work. The GtkTreeModel cast of the datasheet
does not work because datasheet is not derived from treemodel. Changed
types from casenumber to gint because the gtktreemodel function returns gint.
casenumber is long which my be bigger than int but the treemodel cant handle
this anyway.

src/ui/gui/goto-case-dialog.c

index 713c1e354a5d2f5cb2b9b422f9d0066b9fe7c050..dfb059a4aabb21a9420399f966926a1ad4429920 100644 (file)
@@ -19,7 +19,6 @@
 #include "goto-case-dialog.h"
 #include "builder-wrapper.h"
 #include "psppire-dialog.h"
-#include "psppire-data-window.h"
 #include "psppire-data-store.h"
 #include "psppire-data-sheet.h"
 
 static void
 refresh (PsppireDataSheet *ds, GtkBuilder *xml)
 {
-  PsppireDataStore *store = NULL;
-  g_object_get (ds, "data-model", &store, NULL);
+  GtkTreeModel *tm = NULL;
+  g_object_get (ds, "data-model", &tm, NULL);
 
   GtkWidget *case_num_entry = get_widget_assert (xml, "goto-case-case-num-entry");
-  casenumber case_count =  gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL);
+  gint case_count =  gtk_tree_model_iter_n_children (tm, NULL);
+  g_object_unref (tm);
 
   gtk_spin_button_set_range (GTK_SPIN_BUTTON (case_num_entry), 1, case_count);
 }
@@ -53,18 +53,20 @@ goto_case_dialog (PsppireDataSheet *ds)
 
   if (response == PSPPIRE_RESPONSE_GOTO)
     {
-      PsppireDataStore *store = NULL;
-      g_object_get (ds, "data-model", &store, NULL);
+      GtkTreeModel *tm  = NULL;
+      g_object_get (ds, "data-model", &tm, NULL);
 
       GtkWidget *case_num_entry =
        get_widget_assert (xml, "goto-case-case-num-entry");
 
-      glong case_num =
+      gint case_num =
        gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (case_num_entry))
        - FIRST_CASE_NUMBER ;
 
-      if (case_num >= 0 &&
-         case_num < gtk_tree_model_iter_n_children (GTK_TREE_MODEL (ds), NULL))
+      gint case_count = gtk_tree_model_iter_n_children (tm, NULL);
+      g_object_unref (tm);
+
+      if (case_num >= 0 && case_num < case_count)
       {
        ssw_sheet_scroll_to (SSW_SHEET (ds), -1, case_num);
        ssw_sheet_set_active_cell (SSW_SHEET (ds), -1, case_num, 0);