pspp-sheet-view-column: Add support for tooltips on columns.
authorBen Pfaff <blp@cs.stanford.edu>
Wed, 22 Jun 2011 05:45:48 +0000 (22:45 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Wed, 25 Apr 2012 05:41:41 +0000 (22:41 -0700)
src/ui/gui/marshaller-list
src/ui/gui/pspp-sheet-view-column.c

index 02c7ff6d890dc7d84b4409fac854363ba44b9eb2..3cf5a9c87e92cf9aafead3167fd23b1086a59560 100644 (file)
@@ -6,6 +6,7 @@ BOOLEAN:ENUM
 BOOLEAN:ENUM,INT
 BOOLEAN:BOXED,BOXED
 BOOLEAN:BOXED,POINTER
+BOOLEAN:OBJECT
 BOOLEAN:VOID
 VOID:BOXED,BOXED
 VOID:BOXED,OBJECT
index d8f863dc3bde232d44aee50dbbe6c2f118bfa7f1..316dc3349cb463a96c06e06fdf549140137d060c 100644 (file)
@@ -72,6 +72,7 @@ enum
 enum
 {
   CLICKED,
+  QUERY_TOOLTIP,
   LAST_SIGNAL
 };
 
@@ -200,6 +201,16 @@ pspp_sheet_view_column_class_init (PsppSheetViewColumnClass *class)
                   g_cclosure_marshal_VOID__VOID,
                   G_TYPE_NONE, 0);
 
+  tree_column_signals[QUERY_TOOLTIP] =
+    g_signal_new ("query-tooltip",
+                  G_OBJECT_CLASS_TYPE (object_class),
+                  G_SIGNAL_RUN_LAST,
+                  0,
+                  g_signal_accumulator_true_handled, NULL,
+                  psppire_marshal_BOOLEAN__OBJECT,
+                  G_TYPE_BOOLEAN, 1,
+                  GTK_TYPE_TOOLTIP);
+
   g_object_class_install_property (object_class,
                                    PROP_VISIBLE,
                                    g_param_spec_boolean ("visible",
@@ -812,6 +823,22 @@ pspp_sheet_view_column_clear_attributes_by_info (PsppSheetViewColumn *tree_colum
     _pspp_sheet_view_column_cell_set_dirty (tree_column);
 }
 
+static gboolean
+on_query_tooltip (GtkWidget  *widget,
+                  gint        x,
+                  gint        y,
+                  gboolean    keyboard_mode,
+                  GtkTooltip *tooltip,
+                  gpointer    user_data)
+{
+  PsppSheetViewColumn *tree_column = user_data;
+  gboolean handled;
+
+  g_signal_emit (tree_column, tree_column_signals[QUERY_TOOLTIP], 0,
+                 tooltip, &handled);
+  return handled;
+}
+
 /* Helper functions
  */
 
@@ -846,6 +873,10 @@ pspp_sheet_view_column_create_button (PsppSheetViewColumn *tree_column)
                    G_CALLBACK (pspp_sheet_view_column_button_clicked),
                    tree_column);
 
+  g_signal_connect (tree_column->button, "query-tooltip",
+                    G_CALLBACK (on_query_tooltip), tree_column);
+  g_object_set (tree_column->button, "has-tooltip", TRUE, NULL);
+
   tree_column->alignment = gtk_alignment_new (tree_column->xalign, 0.5, 0.0, 0.0);
 
   hbox = gtk_hbox_new (FALSE, 2);