]> Pileus Git - ~andy/gtk/commitdiff
s/GTK_TREE_COLUMN/GTK_TREE_VIEW_COLUMN
authorJonathan Blandford <jrb@redhat.com>
Fri, 16 Mar 2001 22:59:24 +0000 (22:59 +0000)
committerJonathan Blandford <jrb@src.gnome.org>
Fri, 16 Mar 2001 22:59:24 +0000 (22:59 +0000)
Fri Mar 16 18:01:17 2001  Jonathan Blandford  <jrb@redhat.com>

* gtk/gtktreeviewcolumn.[ch]: s/GTK_TREE_COLUMN/GTK_TREE_VIEW_COLUMN

* gtk/gtktreeview.c (gtk_tree_view_row_activated): New signal.

* gtk/gtktreeview.c (gtk_tree_view_destroy): moved pretty much
everything into the ::destroy function, and freed a lot more.

13 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/reference/gdk-pixbuf/gdk-pixbuf.hierarchy
gtk/gtktreeview.c
gtk/gtktreeview.h
gtk/gtktreeviewcolumn.c
gtk/gtktreeviewcolumn.h
tests/testtreefocus.c

index d3fe552d395c46690284fff8f981858d8b6ec1ff..c062c2593da88d28f676a317131167fc6f2a12fc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Fri Mar 16 18:01:17 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeviewcolumn.[ch]: s/GTK_TREE_COLUMN/GTK_TREE_VIEW_COLUMN
+
+       * gtk/gtktreeview.c (gtk_tree_view_row_activated): New signal.
+
+       * gtk/gtktreeview.c (gtk_tree_view_destroy): moved pretty much
+       everything into the ::destroy function, and freed a lot more.
+
 2001-03-16  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtkwidget.h (struct _GtkWidgetAuxInfo): change to use gint
index d3fe552d395c46690284fff8f981858d8b6ec1ff..c062c2593da88d28f676a317131167fc6f2a12fc 100644 (file)
@@ -1,3 +1,12 @@
+Fri Mar 16 18:01:17 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeviewcolumn.[ch]: s/GTK_TREE_COLUMN/GTK_TREE_VIEW_COLUMN
+
+       * gtk/gtktreeview.c (gtk_tree_view_row_activated): New signal.
+
+       * gtk/gtktreeview.c (gtk_tree_view_destroy): moved pretty much
+       everything into the ::destroy function, and freed a lot more.
+
 2001-03-16  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtkwidget.h (struct _GtkWidgetAuxInfo): change to use gint
index d3fe552d395c46690284fff8f981858d8b6ec1ff..c062c2593da88d28f676a317131167fc6f2a12fc 100644 (file)
@@ -1,3 +1,12 @@
+Fri Mar 16 18:01:17 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeviewcolumn.[ch]: s/GTK_TREE_COLUMN/GTK_TREE_VIEW_COLUMN
+
+       * gtk/gtktreeview.c (gtk_tree_view_row_activated): New signal.
+
+       * gtk/gtktreeview.c (gtk_tree_view_destroy): moved pretty much
+       everything into the ::destroy function, and freed a lot more.
+
 2001-03-16  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtkwidget.h (struct _GtkWidgetAuxInfo): change to use gint
index d3fe552d395c46690284fff8f981858d8b6ec1ff..c062c2593da88d28f676a317131167fc6f2a12fc 100644 (file)
@@ -1,3 +1,12 @@
+Fri Mar 16 18:01:17 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeviewcolumn.[ch]: s/GTK_TREE_COLUMN/GTK_TREE_VIEW_COLUMN
+
+       * gtk/gtktreeview.c (gtk_tree_view_row_activated): New signal.
+
+       * gtk/gtktreeview.c (gtk_tree_view_destroy): moved pretty much
+       everything into the ::destroy function, and freed a lot more.
+
 2001-03-16  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtkwidget.h (struct _GtkWidgetAuxInfo): change to use gint
index d3fe552d395c46690284fff8f981858d8b6ec1ff..c062c2593da88d28f676a317131167fc6f2a12fc 100644 (file)
@@ -1,3 +1,12 @@
+Fri Mar 16 18:01:17 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeviewcolumn.[ch]: s/GTK_TREE_COLUMN/GTK_TREE_VIEW_COLUMN
+
+       * gtk/gtktreeview.c (gtk_tree_view_row_activated): New signal.
+
+       * gtk/gtktreeview.c (gtk_tree_view_destroy): moved pretty much
+       everything into the ::destroy function, and freed a lot more.
+
 2001-03-16  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtkwidget.h (struct _GtkWidgetAuxInfo): change to use gint
index d3fe552d395c46690284fff8f981858d8b6ec1ff..c062c2593da88d28f676a317131167fc6f2a12fc 100644 (file)
@@ -1,3 +1,12 @@
+Fri Mar 16 18:01:17 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeviewcolumn.[ch]: s/GTK_TREE_COLUMN/GTK_TREE_VIEW_COLUMN
+
+       * gtk/gtktreeview.c (gtk_tree_view_row_activated): New signal.
+
+       * gtk/gtktreeview.c (gtk_tree_view_destroy): moved pretty much
+       everything into the ::destroy function, and freed a lot more.
+
 2001-03-16  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtkwidget.h (struct _GtkWidgetAuxInfo): change to use gint
index d3fe552d395c46690284fff8f981858d8b6ec1ff..c062c2593da88d28f676a317131167fc6f2a12fc 100644 (file)
@@ -1,3 +1,12 @@
+Fri Mar 16 18:01:17 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtktreeviewcolumn.[ch]: s/GTK_TREE_COLUMN/GTK_TREE_VIEW_COLUMN
+
+       * gtk/gtktreeview.c (gtk_tree_view_row_activated): New signal.
+
+       * gtk/gtktreeview.c (gtk_tree_view_destroy): moved pretty much
+       everything into the ::destroy function, and freed a lot more.
+
 2001-03-16  Havoc Pennington  <hp@redhat.com>
 
        * gtk/gtkwidget.h (struct _GtkWidgetAuxInfo): change to use gint
index 9751e8416434ebb412988a83dc1aeeefdb9619a6..3b8038b7dded05e585d642e1e2e29a024a131787 100644 (file)
@@ -4,4 +4,5 @@ GObject
     GdkDrawableImplX11
       GdkWindowImplX11
   GdkColormap
+  GtkRcStyle
   GdkPixbufLoader
index fa0a395643a925c29879fed045916b234d275556..f4e7cf83cd79825f04966a035ebe76c1814b9775 100644 (file)
@@ -59,6 +59,12 @@ struct _GtkTreeViewChild
   gint y;
 };
 
+enum
+{
+  ROW_ACTIVATED,
+  LAST_SIGNAL
+};
+
 enum {
   PROP_0,
 
@@ -238,10 +244,11 @@ static void     gtk_tree_view_clamp_node_visible   (GtkTreeView      *tree_view,
 static gboolean gtk_tree_view_maybe_begin_dragging_row (GtkTreeView      *tree_view,
                                                         GdkEventMotion   *event);
 static void     _gtk_tree_view_update_col_width    (GtkTreeView      *tree_view);
-
+static void     gtk_tree_view_row_activated        (GtkTreeView      *tree_view,
+                                                   GtkTreeViewColumn *column);
 
 static GtkContainerClass *parent_class = NULL;
-
+static guint tree_view_signals[LAST_SIGNAL] = { 0 };
 
 /* Class Functions */
 GtkType
@@ -387,6 +394,15 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
                    gtk_marshal_VOID__OBJECT_OBJECT,
                    GTK_TYPE_NONE, 2,
                    GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
+
+  tree_view_signals[ROW_ACTIVATED] = gtk_signal_new ("row_activated",
+                                                    GTK_RUN_LAST | GTK_RUN_ACTION,
+                                                    GTK_CLASS_TYPE (object_class),
+                                                    GTK_SIGNAL_OFFSET (GtkTreeViewClass, row_activated),
+                                                    gtk_marshal_VOID__OBJECT,
+                                                    GTK_TYPE_NONE, 1,
+                                                    GTK_TYPE_TREE_VIEW_COLUMN);
+
 }
 
 static void
@@ -428,22 +444,8 @@ gtk_tree_view_finalize (GObject *object)
 {
   GtkTreeView *tree_view = (GtkTreeView *) object;
 
-  if (tree_view->priv->tree)
-    _gtk_rbtree_free (tree_view->priv->tree);
-
-  if (tree_view->priv->scroll_to_path != NULL)
-    gtk_tree_path_free (tree_view->priv->scroll_to_path);
-
-  if (tree_view->priv->drag_dest_row)
-    gtk_tree_row_reference_free (tree_view->priv->drag_dest_row);
-
-  if (tree_view->priv->anchor)
-    gtk_tree_row_reference_free (tree_view->priv->anchor);
-
-  if (tree_view->priv->cursor)
-    gtk_tree_row_reference_free (tree_view->priv->cursor);
-
   g_free (tree_view->priv);
+
   if (G_OBJECT_CLASS (parent_class)->finalize)
     (* G_OBJECT_CLASS (parent_class)->finalize) (object);
 }
@@ -454,15 +456,61 @@ gtk_tree_view_destroy (GtkObject *object)
   GtkTreeView *tree_view = (GtkTreeView *) object;
   GList *list;
 
-  if (tree_view->priv->model)
-    g_object_unref (G_OBJECT (tree_view->priv->model));
-  gtk_tree_view_unref_tree (tree_view, tree_view->priv->tree);
 
-  for (list = tree_view->priv->columns; list; list = list->next)
-    g_object_unref (G_OBJECT (list->data));
+  if (tree_view->priv->tree != NULL)
+    {
+      gtk_tree_view_unref_tree (tree_view, tree_view->priv->tree);
+      _gtk_rbtree_free (tree_view->priv->tree);
+      tree_view->priv->tree = NULL;
+    }
+
+  if (tree_view->priv->model != NULL)
+    {
+      g_object_unref (G_OBJECT (tree_view->priv->model));
+      tree_view->priv->model = NULL;
+    }
 
-  _gtk_tree_selection_set_tree_view (tree_view->priv->selection, NULL);
-  g_object_unref (tree_view->priv->selection);
+  if (tree_view->priv->columns != NULL)
+    {
+      for (list = tree_view->priv->columns; list; list = list->next)
+       g_object_unref (G_OBJECT (list->data));
+      g_list_free (tree_view->priv->columns);
+      tree_view->priv->columns = NULL;
+    }
+
+  if (tree_view->priv->selection != NULL)
+    {
+      _gtk_tree_selection_set_tree_view (tree_view->priv->selection, NULL);
+      g_object_unref (tree_view->priv->selection);
+      tree_view->priv->selection = NULL;
+    }
+
+  if (tree_view->priv->anchor != NULL)
+    {
+      gtk_tree_row_reference_free (tree_view->priv->anchor);
+      tree_view->priv->anchor = NULL;
+    }
+
+  if (tree_view->priv->scroll_to_path != NULL)
+    {
+      gtk_tree_path_free (tree_view->priv->scroll_to_path);
+      tree_view->priv->scroll_to_path = NULL;
+    }
+
+  if (tree_view->priv->drag_dest_row != NULL)
+    {
+      gtk_tree_row_reference_free (tree_view->priv->drag_dest_row);
+      tree_view->priv->drag_dest_row = NULL;
+    }
+
+  if (tree_view->priv->cursor)
+    {
+      gtk_tree_row_reference_free (tree_view->priv->cursor);
+      tree_view->priv->cursor = NULL;
+    }
+
+  if (GTK_OBJECT_CLASS (parent_class)->destroy)
+    (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
 }
 
 /* Property handlers
@@ -1704,7 +1752,7 @@ gtk_tree_view_button_press (GtkWidget      *widget,
 {
   GtkTreeView *tree_view;
   GList *list;
-  GtkTreeViewColumn *column;
+  GtkTreeViewColumn *column = NULL;
   gint i;
   GdkRectangle background_area;
   GdkRectangle cell_area;
@@ -1724,6 +1772,7 @@ gtk_tree_view_button_press (GtkWidget      *widget,
       gint depth;
       gint new_y;
       gint y_offset;
+      GtkTreeViewColumn *column = NULL;
 
       if (!GTK_WIDGET_HAS_FOCUS (widget))
        gtk_widget_grab_focus (widget);
@@ -1768,10 +1817,12 @@ gtk_tree_view_button_press (GtkWidget      *widget,
 
       for (i = 0, list = tree_view->priv->columns; i < tree_view->priv->n_columns; i++, list = list->next)
        {
-         GtkTreeViewColumn *column = list->data;
          GtkCellRenderer *cell;
          GtkTreeIter iter;
          gboolean visible;
+         gboolean can_activate;
+
+         column = list->data;
 
          if (!column->visible)
            continue;
@@ -1809,14 +1860,16 @@ gtk_tree_view_button_press (GtkWidget      *widget,
 
          path_string = gtk_tree_path_to_string (path);
 
-         g_object_get (G_OBJECT (cell), "visible", &visible, NULL);
-         if (visible && gtk_cell_renderer_event (cell,
-                                                 (GdkEvent *)event,
-                                                 widget,
-                                                 path_string,
-                                                 &background_area,
-                                                 &cell_area,
-                                                 0))
+         g_object_get (G_OBJECT (cell),
+                       "visible", &visible,
+                       "can_activate", &can_activate,
+                       NULL);
+         if (visible &&
+             can_activate &&
+             gtk_cell_renderer_event (cell, (GdkEvent *)event,
+                                      widget, path_string,
+                                      &background_area,
+                                      &cell_area, 0))
            {
              g_free (path_string);
              gtk_tree_path_free (path);
@@ -1829,6 +1882,9 @@ gtk_tree_view_button_press (GtkWidget      *widget,
            }
        }
 
+      if (column == NULL)
+       return FALSE;
+
       /* Save press to possibly begin a drag
        */
       if (tree_view->priv->pressed_button < 0)
@@ -1849,6 +1905,11 @@ gtk_tree_view_button_press (GtkWidget      *widget,
                                                path,
                                                event->state);
       gtk_tree_path_free (path);
+
+      if (event->button == 1 && event->type == GDK_2BUTTON_PRESS)
+       {
+         gtk_tree_view_row_activated (tree_view, column );
+       }
       return TRUE;
     }
 
@@ -2627,6 +2688,16 @@ gtk_tree_view_forall (GtkContainer *container,
     }
 }
 
+static void
+gtk_tree_view_row_activated (GtkTreeView       *tree_view,
+                            GtkTreeViewColumn *column)
+{
+  g_return_if_fail (tree_view != NULL);
+  g_return_if_fail (GTK_IS_TREE_VIEW (tree_view));
+
+  g_signal_emit (G_OBJECT(tree_view), tree_view_signals[ROW_ACTIVATED], 0, column);
+}
+
 /* TreeModel Callbacks
  */
 
index 49ae1a4a821b19df9e04d84fb6e81857e74bb0b0..00b998ae16f4d79a41f601fe932c954e5fedd93e 100644 (file)
@@ -65,11 +65,14 @@ struct _GtkTreeViewClass
 {
   GtkContainerClass parent_class;
 
-  void (*set_scroll_adjustments) (GtkTreeView   *tree_view,
-                                 GtkAdjustment *hadjustment,
-                                 GtkAdjustment *vadjustment);
-  gint (*expand_row)             (GtkTreeView   *tree_view,
-                                 GtkTreeIter   *iter);
+  void (* set_scroll_adjustments) (GtkTreeView   *tree_view,
+                                  GtkAdjustment *hadjustment,
+                                  GtkAdjustment *vadjustment);
+  void (* row_activated)          (GtkTreeView   *tree_view,
+                                  GtkTreeViewColumn *column);
+  gint (* expand_row)             (GtkTreeView   *tree_view,
+                                  GtkTreeIter   *iter);
+  
 };
 
 GtkType                gtk_tree_view_get_type            (void);
index 76ced1d85eb1953ee81979aabe07788d7b533c3c..e7347ce07f2f466e743d0bbe56742cbd3419af2c 100644 (file)
@@ -606,7 +606,7 @@ gtk_tree_view_column_new (void)
 {
   GtkTreeViewColumn *retval;
 
-  retval = GTK_TREE_VIEW_COLUMN (gtk_type_new (GTK_TYPE_TREE_COLUMN));
+  retval = GTK_TREE_VIEW_COLUMN (gtk_type_new (GTK_TYPE_TREE_VIEW_COLUMN));
 
   return retval;
 }
index e59cd3c14bd5e6656078e89943883ef67e4095f9..5de559147dc5431c88a9eb1ad11a38f8ac352b44 100644 (file)
 extern "C" {
 #endif /* __cplusplus */
 
-#define GTK_TYPE_TREE_COLUMN                (gtk_tree_view_column_get_type ())
-#define GTK_TREE_VIEW_COLUMN(obj)           (GTK_CHECK_CAST ((obj), GTK_TYPE_TREE_COLUMN, GtkTreeViewColumn))
-#define GTK_TREE_VIEW_COLUMN_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_COLUMN, GtkTreeViewColumnClass))
-#define GTK_IS_TREE_VIEW_COLUMN(obj)        (GTK_CHECK_TYPE ((obj), GTK_TYPE_TREE_COLUMN))
-#define GTK_IS_TREE_VIEW_COLUMN_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), GTK_TYPE_TREE_COLUMN))
+#define GTK_TYPE_TREE_VIEW_COLUMN           (gtk_tree_view_column_get_type ())
+#define GTK_TREE_VIEW_COLUMN(obj)           (GTK_CHECK_CAST ((obj), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumn))
+#define GTK_TREE_VIEW_COLUMN_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TREE_VIEW_COLUMN, GtkTreeViewColumnClass))
+#define GTK_IS_TREE_VIEW_COLUMN(obj)        (GTK_CHECK_TYPE ((obj), GTK_TYPE_TREE_VIEW_COLUMN))
+#define GTK_IS_TREE_VIEW_COLUMN_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), GTK_TYPE_TREE_VIEW_COLUMN))
 
 typedef enum
 {
index c768a70d5488f11467a64c22824442053b83c171..5df51eb375da81ce361a0c0561c5ffdf413b319a 100644 (file)
@@ -266,7 +266,6 @@ tim_toggled (GtkCellRendererToggle *cell,
   gtk_tree_path_free (path);
 }
 
-
 int
 main (int argc, char *argv[])
 {
@@ -370,10 +369,9 @@ main (int argc, char *argv[])
   gtk_tree_view_column_set_width (GTK_TREE_VIEW_COLUMN (column), 50);
   g_object_unref (renderer);
 
-
   gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view);
-  gtk_widget_show_all (window);
 
+  gtk_widget_show_all (window);
   gtk_main ();
 
   return 0;