[maemo-commits] [maemo-commits] r15734 - in projects/haf/trunk/gtk+: . gtk
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Thu Jul 3 16:54:35 EEST 2008
- Previous message: [maemo-commits] r15733 - in projects/haf/trunk/gtk+: . gtk
- Next message: [maemo-commits] r15735 - in projects/haf/trunk/gtk+: . gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: kris Date: 2008-07-03 16:54:20 +0300 (Thu, 03 Jul 2008) New Revision: 15734 Modified: projects/haf/trunk/gtk+/ChangeLog projects/haf/trunk/gtk+/gtk/gtktreeprivate.h projects/haf/trunk/gtk+/gtk/gtktreeview.c Log: 2008-07-03 Kristian Rietveld <kris at imendio.com> * gtk/gtktreeprivate.h: update fields. * gtk/gtktreeview.c (gtk_tree_view_init), (gtk_tree_view_button_press), (gtk_tree_view_button_release), (gtk_tree_view_bin_expose), (free_queued_select_row), (free_queued_activate_row): keep track of highlighted row via a (tree, node) pair instead of selection state on the node (there can only be on highlighted node at the time anyway), only draw tick marks for selected rows, (gtk_tree_view_focus_to_cursor): direct bail out in Fremantle mode, it was possible to change the selection using keyboard. Modified: projects/haf/trunk/gtk+/ChangeLog =================================================================== --- projects/haf/trunk/gtk+/ChangeLog 2008-07-03 11:41:30 UTC (rev 15733) +++ projects/haf/trunk/gtk+/ChangeLog 2008-07-03 13:54:20 UTC (rev 15734) @@ -1,5 +1,19 @@ 2008-07-03 Kristian Rietveld <kris at imendio.com> + * gtk/gtktreeprivate.h: update fields. + + * gtk/gtktreeview.c (gtk_tree_view_init), + (gtk_tree_view_button_press), (gtk_tree_view_button_release), + (gtk_tree_view_bin_expose), + (free_queued_select_row), (free_queued_activate_row): keep track + of highlighted row via a (tree, node) pair instead of selection + state on the node (there can only be on highlighted node at the + time anyway), only draw tick marks for selected rows, + (gtk_tree_view_focus_to_cursor): direct bail out in Fremantle + mode, it was possible to change the selection using keyboard. + +2008-07-03 Kristian Rietveld <kris at imendio.com> + * gtk/gtkstyle.h: change old MAEMO START comments into #ifdefs. 2008-06-25 Kristian Rietveld <kris at imendio.com> Modified: projects/haf/trunk/gtk+/gtk/gtktreeprivate.h =================================================================== --- projects/haf/trunk/gtk+/gtk/gtktreeprivate.h 2008-07-03 11:41:30 UTC (rev 15733) +++ projects/haf/trunk/gtk+/gtk/gtktreeprivate.h 2008-07-03 13:54:20 UTC (rev 15734) @@ -279,13 +279,15 @@ GtkTreeRowReference *queued_expand_row; GtkTreeRowReference *queued_activate_row; + GtkRBNode *highlighted_node; + GtkRBTree *highlighted_tree; + GtkTreeCellDataHint cell_data_hint; HildonUIMode hildon_ui_mode; guint queued_shift_pressed : 1; guint queued_ctrl_pressed : 1; - guint queued_select_was_selected : 1; #endif /* MAEMO_CHANGES */ }; Modified: projects/haf/trunk/gtk+/gtk/gtktreeview.c =================================================================== --- projects/haf/trunk/gtk+/gtk/gtktreeview.c 2008-07-03 11:41:30 UTC (rev 15733) +++ projects/haf/trunk/gtk+/gtk/gtktreeview.c 2008-07-03 13:54:20 UTC (rev 15734) @@ -1463,6 +1463,9 @@ tree_view->priv->queued_expand_row = NULL; tree_view->priv->queued_activate_row = NULL; + tree_view->priv->highlighted_node = NULL; + tree_view->priv->highlighted_tree = NULL; + tree_view->priv->queued_ctrl_pressed = FALSE; tree_view->priv->queued_shift_pressed = FALSE; @@ -2915,7 +2918,8 @@ tree_view->priv->queued_activate_row = gtk_tree_row_reference_new (tree_view->priv->model, path); /* Mark the node as selected to create a highlight effect */ - GTK_RBNODE_SET_FLAG (node, GTK_RBNODE_IS_SELECTED); + tree_view->priv->highlighted_tree = tree; + tree_view->priv->highlighted_node = node; gtk_tree_view_queue_draw_path (tree_view, path, NULL); } else if (mode == HILDON_DIABLO @@ -2987,10 +2991,9 @@ if (tree_view->priv->queued_select_row) gtk_tree_row_reference_free (tree_view->priv->queued_select_row); tree_view->priv->queued_select_row = NULL; - tree_view->priv->queued_select_was_selected = node_selected; - if (!node_selected) - GTK_RBNODE_SET_FLAG (node, GTK_RBNODE_IS_SELECTED); + tree_view->priv->highlighted_node = node; + tree_view->priv->highlighted_tree = tree; tree_view->priv->queued_select_row = gtk_tree_row_reference_new (tree_view->priv->model, path); @@ -3366,12 +3369,16 @@ if (mode == HILDON_FREMANTLE && tree_view->priv->hildon_ui_mode == HILDON_UI_MODE_NORMAL) { - GtkRBTree *tree; - GtkRBNode *node; + if (tree_view->priv->highlighted_node) + { + _gtk_tree_view_queue_draw_node (tree_view, + tree_view->priv->highlighted_tree, + tree_view->priv->highlighted_node, + NULL); - _gtk_tree_view_find_node (tree_view, path, &tree, &node); - GTK_RBNODE_UNSET_FLAG (node, GTK_RBNODE_IS_SELECTED); - gtk_tree_view_queue_draw_path (tree_view, path, NULL); + tree_view->priv->highlighted_tree = NULL; + tree_view->priv->highlighted_node = NULL; + } gtk_tree_view_row_activated (tree_view, path, tree_view->priv->focus_column); @@ -4885,7 +4892,12 @@ if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_PRELIT)) flags |= GTK_CELL_RENDERER_PRELIT; +#ifdef MAEMO_CHANGES + if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED) + || node == tree_view->priv->highlighted_node) +#else /* !MAEMO_CHANGES */ if (GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED)) +#endif /* !MAEMO_CHANGES */ flags |= GTK_CELL_RENDERER_SELECTED; parity = _gtk_rbtree_node_find_parity (tree, node); @@ -10375,7 +10387,17 @@ { GtkTreePath *cursor_path; +#ifdef MAEMO_CHANGES + HildonMode mode; + gtk_widget_style_get (GTK_WIDGET (tree_view), + "hildon-mode", &mode, + NULL); + + if (mode == HILDON_FREMANTLE) + return; +#endif /* MAEMO_CHANGES */ + if ((tree_view->priv->tree == NULL) || (! GTK_WIDGET_REALIZED (tree_view))) return; @@ -10414,14 +10436,6 @@ if (cursor_path) { -#ifdef MAEMO_CHANGES - HildonMode mode; - - gtk_widget_style_get (GTK_WIDGET (tree_view), - "hildon-mode", &mode, - NULL); -#endif /* MAEMO_CHANGES */ - if (tree_view->priv->selection->type == GTK_SELECTION_MULTIPLE #ifdef MAEMO_CHANGES && mode == HILDON_DIABLO @@ -16707,21 +16721,18 @@ * was previously *not* selected. */ if (mode == HILDON_FREMANTLE - && tree_view->priv->queued_select_row - && !tree_view->priv->queued_select_was_selected) + && tree_view->priv->queued_select_row) { - GtkRBTree *tree; - GtkRBNode *node; - GtkTreePath *path; + if (tree_view->priv->highlighted_node) + { + _gtk_tree_view_queue_draw_node (tree_view, + tree_view->priv->highlighted_tree, + tree_view->priv->highlighted_node, + NULL); - path = gtk_tree_row_reference_get_path (tree_view->priv->queued_select_row); - if (path) - { - _gtk_tree_view_find_node (tree_view, path, &tree, &node); - GTK_RBNODE_UNSET_FLAG (node, GTK_RBNODE_IS_SELECTED); - gtk_tree_view_queue_draw_path (tree_view, path, NULL); + tree_view->priv->highlighted_tree = NULL; + tree_view->priv->highlighted_node = NULL; } - gtk_tree_path_free (path); } gtk_tree_row_reference_free (tree_view->priv->queued_select_row); @@ -16741,18 +16752,16 @@ && tree_view->priv->hildon_ui_mode == HILDON_UI_MODE_NORMAL && tree_view->priv->queued_activate_row) { - GtkRBTree *tree; - GtkRBNode *node; - GtkTreePath *path; + if (tree_view->priv->highlighted_node) + { + _gtk_tree_view_queue_draw_node (tree_view, + tree_view->priv->highlighted_tree, + tree_view->priv->highlighted_node, + NULL); - path = gtk_tree_row_reference_get_path (tree_view->priv->queued_activate_row); - if (path) - { - _gtk_tree_view_find_node (tree_view, path, &tree, &node); - GTK_RBNODE_UNSET_FLAG (node, GTK_RBNODE_IS_SELECTED); - gtk_tree_view_queue_draw_path (tree_view, path, NULL); + tree_view->priv->highlighted_tree = NULL; + tree_view->priv->highlighted_node = NULL; } - gtk_tree_path_free (path); } gtk_tree_row_reference_free (tree_view->priv->queued_activate_row);
- Previous message: [maemo-commits] r15733 - in projects/haf/trunk/gtk+: . gtk
- Next message: [maemo-commits] r15735 - in projects/haf/trunk/gtk+: . gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]