X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-variable-sheet.c;h=d877c80dc969a72390217b7f0ca940d2a72c6cf1;hb=514d9af1f690c316a5ad501aa0083ba6c1e00e56;hp=32d163f66578a579f16e33a6f9be5ba4fb091041;hpb=ca1382f24fd0a8a90dd65daf98a279d6a549d9da;p=pspp diff --git a/src/ui/gui/psppire-variable-sheet.c b/src/ui/gui/psppire-variable-sheet.c index 32d163f665..d877c80dc9 100644 --- a/src/ui/gui/psppire-variable-sheet.c +++ b/src/ui/gui/psppire-variable-sheet.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical user interface for PSPP. - Copyright (C) 2017 John Darrington + Copyright (C) 2017 Free Software Foundation 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 @@ -248,6 +248,13 @@ delete_variables (SswSheet *sheet) PsppireDict *dict = NULL; g_object_get (sheet, "data-model", &dict, NULL); + if (range->start_x > range->end_x) + { + gint temp = range->start_x; + range->start_x = range->end_x; + range->end_x = temp; + } + psppire_dict_delete_variables (dict, range->start_y, (range->end_y - range->start_y + 1)); @@ -259,6 +266,10 @@ create_var_row_header_popup_menu (PsppireVariableSheet *var_sheet) { GtkWidget *menu = gtk_menu_new (); + /* gtk_menu_shell_append does not sink/ref this object, + so we must do it ourselves (and remember to unref it). */ + g_object_ref_sink (menu); + GtkWidget *item = gtk_menu_item_new_with_mnemonic (_("_Insert Variable")); g_signal_connect_swapped (item, "activate", G_CALLBACK (insert_new_variable_var), @@ -425,6 +436,7 @@ psppire_variable_sheet_dispose (GObject *obj) g_object_unref (sheet->value_label_renderer); g_object_unref (sheet->missing_values_renderer); g_object_unref (sheet->var_type_renderer); + g_object_unref (sheet->row_popup); /* Chain up to the parent class */ G_OBJECT_CLASS (parent_class)->dispose (obj); @@ -438,7 +450,7 @@ psppire_variable_sheet_finalize (GObject *object) g_free (sheet->value_label_dispatch); g_free (sheet->missing_values_dispatch); g_free (sheet->var_type_dispatch); - + if (G_OBJECT_CLASS (parent_class)->finalize) (*G_OBJECT_CLASS (parent_class)->finalize) (object); } @@ -506,7 +518,7 @@ is_printable_key (gint keyval) return FALSE; break; } - + return (0 != gdk_keyval_to_unicode (keyval)); } @@ -540,7 +552,7 @@ on_button_press (GtkWidget *w, GdkEventButton *e, gpointer user_data) d->payload (d->sheet); return TRUE; } - + static void on_edit_start (GtkCellRenderer *renderer, GtkCellEditable *editable, @@ -552,7 +564,7 @@ on_edit_start (GtkCellRenderer *renderer, G_CALLBACK (on_key_press), user_data); g_signal_connect (editable, "button-press-event", G_CALLBACK (on_button_press), user_data); - + } static void @@ -583,9 +595,8 @@ psppire_variable_sheet_init (PsppireVariableSheet *sheet) g_signal_connect_after (sheet->var_type_renderer, "editing-started", G_CALLBACK (on_edit_start), sheet->var_type_dispatch); - - sheet->row_popup = create_var_row_header_popup_menu (sheet); + sheet->row_popup = create_var_row_header_popup_menu (sheet); g_signal_connect (sheet, "selection-changed", G_CALLBACK (set_var_popup_sensitivity), sheet);