summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2002-04-09 19:48:32 +0000
committerKristian Rietveld <kristian@src.gnome.org>2002-04-09 19:48:32 +0000
commit64e33eb68f6e3c999a98147c2d7ccf2698f3ce20 (patch)
treef5ebbacef461c03df3daf4e886bda31c76554462
parent2e85b314e2694221b5ed007eda3c3ecf6a00878e (diff)
downloadgdk-pixbuf-64e33eb68f6e3c999a98147c2d7ccf2698f3ce20.tar.gz
Fixes #78110
Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org> Fixes #78110 * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node): add override_browse_mode argument and implement, (gtk_tree_selection_unselect_path): always unselect the path, (toplevel): update uses of _gtk_tree_selection_internal_select_node * gtk/gtktreeview.c: update uses of _gtk_tree_selection_internal_select_node * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node): update prototype Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org> Fixes #77862 * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell): new function * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event on first click when cell isn't editable Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org> * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some types which were missing and useful to use (fixes #77870)
-rw-r--r--ChangeLog32
-rw-r--r--ChangeLog.pre-2-1032
-rw-r--r--ChangeLog.pre-2-232
-rw-r--r--ChangeLog.pre-2-432
-rw-r--r--ChangeLog.pre-2-632
-rw-r--r--ChangeLog.pre-2-832
-rw-r--r--gtk/gtktreedatalist.c4
-rw-r--r--gtk/gtktreeprivate.h4
-rw-r--r--gtk/gtktreeselection.c27
-rw-r--r--gtk/gtktreeview.c14
-rw-r--r--gtk/gtktreeviewcolumn.c13
11 files changed, 242 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 1e5a63405..f90959972 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,35 @@
+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index 1e5a63405..f90959972 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,35 @@
+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index 1e5a63405..f90959972 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,35 @@
+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index 1e5a63405..f90959972 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,35 @@
+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index 1e5a63405..f90959972 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,35 @@
+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index 1e5a63405..f90959972 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,35 @@
+Tue Apr 9 21:41:24 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #78110
+
+ * gtk/gtktreeselection.c (_gtk_tree_selection_internal_select_node):
+ add override_browse_mode argument and implement,
+ (gtk_tree_selection_unselect_path): always unselect the path,
+ (toplevel): update uses of _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeview.c: update uses of
+ _gtk_tree_selection_internal_select_node
+
+ * gtk/gtktreeprivate.h (_gtk_tree_selection_internal_select_node):
+ update prototype
+
+Tue Apr 9 21:39:44 2002 Kristian Rietveld <kris@gtk.org>
+
+ Fixes #77862
+
+ * gtk/gtktreeprivate.h: add _gtk_tree_view_column_has_editable_cell
+
+ * gtk/gtktreeviewcolumn.c (_gtk_tree_view_column_has_editable_cell):
+ new function
+
+ * gtk/gtktreeview.c (gtk_tree_view_button_press): send cell event
+ on first click when cell isn't editable
+
+Tue Apr 9 21:37:31 2002 Kristian Rietveld <kris@gtk.org>
+
+ * gtk/gtktreedatalist.c (_gtk_tree_data_list_check_type): add some
+ types which were missing and useful to use (fixes #77870)
+
2002-04-09 Anders Carlsson <andersca@gnu.org>
* gtk/gtkfilesel.c (open_new_dir): Initialize error to NULL.
diff --git a/gtk/gtktreedatalist.c b/gtk/gtktreedatalist.c
index a1007c355..137de3e27 100644
--- a/gtk/gtktreedatalist.c
+++ b/gtk/gtktreedatalist.c
@@ -80,6 +80,10 @@ _gtk_tree_data_list_check_type (GType type)
G_TYPE_UCHAR,
G_TYPE_INT,
G_TYPE_UINT,
+ G_TYPE_LONG,
+ G_TYPE_ULONG,
+ G_TYPE_INT64,
+ G_TYPE_UINT64,
G_TYPE_ENUM,
G_TYPE_FLAGS,
G_TYPE_FLOAT,
diff --git a/gtk/gtktreeprivate.h b/gtk/gtktreeprivate.h
index 7fcaa903a..0d101cf70 100644
--- a/gtk/gtktreeprivate.h
+++ b/gtk/gtktreeprivate.h
@@ -272,7 +272,8 @@ void _gtk_tree_selection_internal_select_node (GtkTreeSelection *select
GtkRBNode *node,
GtkRBTree *tree,
GtkTreePath *path,
- GdkModifierType state);
+ GdkModifierType state,
+ gboolean override_browse_mode);
gboolean _gtk_tree_view_find_node (GtkTreeView *tree_view,
GtkTreePath *path,
GtkRBTree **tree,
@@ -311,6 +312,7 @@ void _gtk_tree_view_column_start_editing (GtkTreeViewColumn *tree_column,
GtkCellEditable *editable_widget);
void _gtk_tree_view_column_stop_editing (GtkTreeViewColumn *tree_column);
void _gtk_tree_view_install_mark_rows_col_dirty (GtkTreeView *tree_view);
+gboolean _gtk_tree_view_column_has_editable_cell (GtkTreeViewColumn *column);
GtkTreeSelection* _gtk_tree_selection_new (void);
GtkTreeSelection* _gtk_tree_selection_new_with_tree_view (GtkTreeView *tree_view);
diff --git a/gtk/gtktreeselection.c b/gtk/gtktreeselection.c
index 4fe966a31..cc34946da 100644
--- a/gtk/gtktreeselection.c
+++ b/gtk/gtktreeselection.c
@@ -239,7 +239,8 @@ gtk_tree_selection_set_mode (GtkTreeSelection *selection,
node,
tree,
anchor_path,
- 0);
+ 0,
+ FALSE);
if (anchor_path)
gtk_tree_path_free (anchor_path);
}
@@ -549,7 +550,8 @@ gtk_tree_selection_select_path (GtkTreeSelection *selection,
node,
tree,
path,
- state);
+ state,
+ FALSE);
}
/**
@@ -584,7 +586,8 @@ gtk_tree_selection_unselect_path (GtkTreeSelection *selection,
node,
tree,
path,
- GDK_CONTROL_MASK);
+ GDK_CONTROL_MASK,
+ TRUE);
}
/**
@@ -986,12 +989,19 @@ gtk_tree_selection_select_range (GtkTreeSelection *selection,
/* Called internally by gtktreeview.c It handles actually selecting the tree.
*/
+
+/**
+ * docs about the 'override_browse_mode', we set this flag when we want to
+ * unset select the node and override the select browse mode behaviour (that is
+ * 'one node should *always* be selected').
+ */
void
_gtk_tree_selection_internal_select_node (GtkTreeSelection *selection,
GtkRBNode *node,
GtkRBTree *tree,
GtkTreePath *path,
- GdkModifierType state)
+ GdkModifierType state,
+ gboolean override_browse_mode)
{
gint flags;
gint dirty = FALSE;
@@ -1006,9 +1016,14 @@ _gtk_tree_selection_internal_select_node (GtkTreeSelection *selection,
if (selection->type == GTK_SELECTION_SINGLE ||
selection->type == GTK_SELECTION_BROWSE)
{
+ /* just unselect */
+ if (selection->type == GTK_SELECTION_BROWSE && override_browse_mode)
+ {
+ dirty = gtk_tree_selection_real_unselect_all (selection);
+ }
/* Did we try to select the same node again? */
- if (selection->type == GTK_SELECTION_SINGLE &&
- anchor_path && gtk_tree_path_compare (path, anchor_path) == 0)
+ else if (selection->type == GTK_SELECTION_SINGLE &&
+ anchor_path && gtk_tree_path_compare (path, anchor_path) == 0)
{
if ((state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK)
{
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c
index 121aad725..f04b28425 100644
--- a/gtk/gtktreeview.c
+++ b/gtk/gtktreeview.c
@@ -1794,7 +1794,8 @@ gtk_tree_view_button_press (GtkWidget *widget,
{
GtkTreePath *cursor = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
- if (cursor && !gtk_tree_path_compare (cursor, path))
+ if ((cursor && !gtk_tree_path_compare (cursor, path))
+ || !_gtk_tree_view_column_has_editable_cell (column))
{
GtkCellEditable *cell_editable = NULL;
@@ -7165,7 +7166,8 @@ gtk_tree_view_real_select_cursor_row (GtkTreeView *tree_view,
cursor_node,
cursor_tree,
cursor_path,
- state);
+ state,
+ FALSE);
gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
@@ -7207,7 +7209,8 @@ gtk_tree_view_real_toggle_cursor_row (GtkTreeView *tree_view)
cursor_node,
cursor_tree,
cursor_path,
- GDK_CONTROL_MASK);
+ GDK_CONTROL_MASK,
+ FALSE);
gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
@@ -7290,7 +7293,8 @@ gtk_tree_view_real_select_cursor_parent (GtkTreeView *tree_view)
cursor_node,
cursor_tree,
cursor_path,
- 0);
+ 0,
+ FALSE);
}
gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
@@ -9127,7 +9131,7 @@ gtk_tree_view_real_set_cursor (GtkTreeView *tree_view,
if (clear_and_select && !((state & GDK_CONTROL_MASK) == GDK_CONTROL_MASK))
_gtk_tree_selection_internal_select_node (tree_view->priv->selection,
node, tree, path,
- state);
+ state, FALSE);
gtk_tree_view_clamp_node_visible (tree_view, tree, node);
_gtk_tree_view_queue_draw_node (tree_view, tree, node, NULL);
}
diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c
index 1c46d6123..4317c890f 100644
--- a/gtk/gtktreeviewcolumn.c
+++ b/gtk/gtktreeviewcolumn.c
@@ -1040,6 +1040,19 @@ _gtk_tree_view_column_unset_tree_view (GtkTreeViewColumn *column)
column->button = NULL;
}
+gboolean
+_gtk_tree_view_column_has_editable_cell (GtkTreeViewColumn *column)
+{
+ GList *list;
+
+ for (list = column->cell_list; list; list = list ->next)
+ if (((GtkTreeViewColumnCellInfo *)list->data)->cell->mode ==
+ GTK_CELL_RENDERER_MODE_EDITABLE)
+ return TRUE;
+
+ return FALSE;
+}
+
/* Public Functions */