diff options
author | Matthias Clasen <mclasen@redhat.com> | 2015-09-06 10:44:30 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2015-09-06 17:11:36 -0400 |
commit | 2da31e53b0abaf2d9a23e38d88b9bea1508b74fa (patch) | |
tree | add6a65d4f8a0c4aa2bc4a349362e4f5bef05bea /gtk | |
parent | dfe1c63c9b92ae64bdd0cac7bf57261363c4ec17 (diff) | |
download | gtk+-2da31e53b0abaf2d9a23e38d88b9bea1508b74fa.tar.gz |
treeview: Convert to g_object_notify_by_pspec
This avoids pspec lookup overhead in g_object_notify.
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtktreeview.c | 312 |
1 files changed, 151 insertions, 161 deletions
diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index 6de8ff29e7..b9854b32a3 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -526,10 +526,6 @@ enum enum { PROP_0, PROP_MODEL, - PROP_HADJUSTMENT, - PROP_VADJUSTMENT, - PROP_HSCROLL_POLICY, - PROP_VSCROLL_POLICY, PROP_HEADERS_VISIBLE, PROP_HEADERS_CLICKABLE, PROP_EXPANDER_COLUMN, @@ -546,7 +542,13 @@ enum { PROP_ENABLE_GRID_LINES, PROP_ENABLE_TREE_LINES, PROP_TOOLTIP_COLUMN, - PROP_ACTIVATE_ON_SINGLE_CLICK + PROP_ACTIVATE_ON_SINGLE_CLICK, + LAST_PROP, + /* overridden */ + PROP_HADJUSTMENT = LAST_PROP, + PROP_VADJUSTMENT, + PROP_HSCROLL_POLICY, + PROP_VSCROLL_POLICY, }; /* object signals */ @@ -920,6 +922,7 @@ static void gtk_tree_view_drag_gesture_end (GtkGestureDrag *ges GtkTreeView *tree_view); static guint tree_view_signals [LAST_SIGNAL] = { 0 }; +static GParamSpec *tree_view_props [LAST_PROP] = { NULL }; @@ -998,50 +1001,45 @@ gtk_tree_view_class_init (GtkTreeViewClass *class) /* Properties */ - g_object_class_install_property (o_class, - PROP_MODEL, - g_param_spec_object ("model", - P_("TreeView Model"), - P_("The model for the tree view"), - GTK_TYPE_TREE_MODEL, - GTK_PARAM_READWRITE)); - g_object_class_override_property (o_class, PROP_HADJUSTMENT, "hadjustment"); g_object_class_override_property (o_class, PROP_VADJUSTMENT, "vadjustment"); g_object_class_override_property (o_class, PROP_HSCROLL_POLICY, "hscroll-policy"); g_object_class_override_property (o_class, PROP_VSCROLL_POLICY, "vscroll-policy"); - g_object_class_install_property (o_class, - PROP_HEADERS_VISIBLE, - g_param_spec_boolean ("headers-visible", - P_("Headers Visible"), - P_("Show the column header buttons"), - TRUE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - - g_object_class_install_property (o_class, - PROP_HEADERS_CLICKABLE, - g_param_spec_boolean ("headers-clickable", - P_("Headers Clickable"), - P_("Column headers respond to click events"), - TRUE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - - g_object_class_install_property (o_class, - PROP_EXPANDER_COLUMN, - g_param_spec_object ("expander-column", - P_("Expander Column"), - P_("Set the column for the expander column"), - GTK_TYPE_TREE_VIEW_COLUMN, - GTK_PARAM_READWRITE)); - - g_object_class_install_property (o_class, - PROP_REORDERABLE, - g_param_spec_boolean ("reorderable", - P_("Reorderable"), - P_("View is reorderable"), - FALSE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); + tree_view_props[PROP_MODEL] = + g_param_spec_object ("model", + P_("TreeView Model"), + P_("The model for the tree view"), + GTK_TYPE_TREE_MODEL, + GTK_PARAM_READWRITE); + + tree_view_props[PROP_HEADERS_VISIBLE] = + g_param_spec_boolean ("headers-visible", + P_("Headers Visible"), + P_("Show the column header buttons"), + TRUE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); + + tree_view_props[PROP_HEADERS_CLICKABLE] = + g_param_spec_boolean ("headers-clickable", + P_("Headers Clickable"), + P_("Column headers respond to click events"), + TRUE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); + + tree_view_props[PROP_EXPANDER_COLUMN] = + g_param_spec_object ("expander-column", + P_("Expander Column"), + P_("Set the column for the expander column"), + GTK_TYPE_TREE_VIEW_COLUMN, + GTK_PARAM_READWRITE); + + tree_view_props[PROP_REORDERABLE] = + g_param_spec_boolean ("reorderable", + P_("Reorderable"), + P_("View is reorderable"), + FALSE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); /** * GtkTreeView:rules-hint: @@ -1051,29 +1049,27 @@ gtk_tree_view_class_init (GtkTreeViewClass *class) * Deprecated: 3.14: The theme is responsible for drawing rows * using zebra striping */ - g_object_class_install_property (o_class, - PROP_RULES_HINT, - g_param_spec_boolean ("rules-hint", - P_("Rules Hint"), - P_("Set a hint to the theme engine to draw rows in alternating colors"), - FALSE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY|G_PARAM_DEPRECATED)); - - g_object_class_install_property (o_class, - PROP_ENABLE_SEARCH, - g_param_spec_boolean ("enable-search", - P_("Enable Search"), - P_("View allows user to search through columns interactively"), - TRUE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - - g_object_class_install_property (o_class, - PROP_SEARCH_COLUMN, - g_param_spec_int ("search-column", - P_("Search Column"), - P_("Model column to search through during interactive search"), - -1, G_MAXINT, -1, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); + tree_view_props[PROP_RULES_HINT] = + g_param_spec_boolean ("rules-hint", + P_("Rules Hint"), + P_("Set a hint to the theme engine to draw rows in alternating colors"), + FALSE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY|G_PARAM_DEPRECATED); + + tree_view_props[PROP_ENABLE_SEARCH] = + g_param_spec_boolean ("enable-search", + P_("Enable Search"), + P_("View allows user to search through columns interactively"), + TRUE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); + + tree_view_props[PROP_SEARCH_COLUMN] = + g_param_spec_int ("search-column", + P_("Search Column"), + P_("Model column to search through during interactive search"), + -1, G_MAXINT, + -1, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); /** * GtkTreeView:fixed-height-mode: @@ -1086,14 +1082,13 @@ gtk_tree_view_class_init (GtkTreeViewClass *class) * * Since: 2.4 */ - g_object_class_install_property (o_class, - PROP_FIXED_HEIGHT_MODE, - g_param_spec_boolean ("fixed-height-mode", - P_("Fixed Height Mode"), - P_("Speeds up GtkTreeView by assuming that all rows have the same height"), - FALSE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - + tree_view_props[PROP_FIXED_HEIGHT_MODE] = + g_param_spec_boolean ("fixed-height-mode", + P_("Fixed Height Mode"), + P_("Speeds up GtkTreeView by assuming that all rows have the same height"), + FALSE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); + /** * GtkTreeView:hover-selection: * @@ -1107,13 +1102,12 @@ gtk_tree_view_class_init (GtkTreeViewClass *class) * * Since: 2.6 */ - g_object_class_install_property (o_class, - PROP_HOVER_SELECTION, - g_param_spec_boolean ("hover-selection", - P_("Hover Selection"), - P_("Whether the selection should follow the pointer"), - FALSE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); + tree_view_props[PROP_HOVER_SELECTION] = + g_param_spec_boolean ("hover-selection", + P_("Hover Selection"), + P_("Whether the selection should follow the pointer"), + FALSE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); /** * GtkTreeView:hover-expand: @@ -1127,13 +1121,12 @@ gtk_tree_view_class_init (GtkTreeViewClass *class) * * Since: 2.6 */ - g_object_class_install_property (o_class, - PROP_HOVER_EXPAND, - g_param_spec_boolean ("hover-expand", - P_("Hover Expand"), - P_("Whether rows should be expanded/collapsed when the pointer moves over them"), - FALSE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); + tree_view_props[PROP_HOVER_EXPAND] = + g_param_spec_boolean ("hover-expand", + P_("Hover Expand"), + P_("Whether rows should be expanded/collapsed when the pointer moves over them"), + FALSE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); /** * GtkTreeView:show-expanders: @@ -1142,13 +1135,12 @@ gtk_tree_view_class_init (GtkTreeViewClass *class) * * Since: 2.12 */ - g_object_class_install_property (o_class, - PROP_SHOW_EXPANDERS, - g_param_spec_boolean ("show-expanders", - P_("Show Expanders"), - P_("View has expanders"), - TRUE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); + tree_view_props[PROP_SHOW_EXPANDERS] = + g_param_spec_boolean ("show-expanders", + P_("Show Expanders"), + P_("View has expanders"), + TRUE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); /** * GtkTreeView:level-indentation: @@ -1157,46 +1149,43 @@ gtk_tree_view_class_init (GtkTreeViewClass *class) * * Since: 2.12 */ - g_object_class_install_property (o_class, - PROP_LEVEL_INDENTATION, - g_param_spec_int ("level-indentation", - P_("Level Indentation"), - P_("Extra indentation for each level"), - 0, G_MAXINT, 0, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - - g_object_class_install_property (o_class, - PROP_RUBBER_BANDING, - g_param_spec_boolean ("rubber-banding", - P_("Rubber Banding"), - P_("Whether to enable selection of multiple items by dragging the mouse pointer"), - FALSE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - - g_object_class_install_property (o_class, - PROP_ENABLE_GRID_LINES, - g_param_spec_enum ("enable-grid-lines", - P_("Enable Grid Lines"), - P_("Whether grid lines should be drawn in the tree view"), - GTK_TYPE_TREE_VIEW_GRID_LINES, - GTK_TREE_VIEW_GRID_LINES_NONE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - - g_object_class_install_property (o_class, - PROP_ENABLE_TREE_LINES, - g_param_spec_boolean ("enable-tree-lines", - P_("Enable Tree Lines"), - P_("Whether tree lines should be drawn in the tree view"), - FALSE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); - - g_object_class_install_property (o_class, - PROP_TOOLTIP_COLUMN, - g_param_spec_int ("tooltip-column", - P_("Tooltip Column"), - P_("The column in the model containing the tooltip texts for the rows"), - -1, G_MAXINT, -1, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); + tree_view_props[PROP_LEVEL_INDENTATION] = + g_param_spec_int ("level-indentation", + P_("Level Indentation"), + P_("Extra indentation for each level"), + 0, G_MAXINT, + 0, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); + + tree_view_props[PROP_RUBBER_BANDING] = + g_param_spec_boolean ("rubber-banding", + P_("Rubber Banding"), + P_("Whether to enable selection of multiple items by dragging the mouse pointer"), + FALSE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); + + tree_view_props[PROP_ENABLE_GRID_LINES] = + g_param_spec_enum ("enable-grid-lines", + P_("Enable Grid Lines"), + P_("Whether grid lines should be drawn in the tree view"), + GTK_TYPE_TREE_VIEW_GRID_LINES, + GTK_TREE_VIEW_GRID_LINES_NONE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); + + tree_view_props[PROP_ENABLE_TREE_LINES] = + g_param_spec_boolean ("enable-tree-lines", + P_("Enable Tree Lines"), + P_("Whether tree lines should be drawn in the tree view"), + FALSE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); + + tree_view_props[PROP_TOOLTIP_COLUMN] = + g_param_spec_int ("tooltip-column", + P_("Tooltip Column"), + P_("The column in the model containing the tooltip texts for the rows"), + -1, G_MAXINT, + -1, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); /** * GtkTreeView:activate-on-single-click: @@ -1206,13 +1195,14 @@ gtk_tree_view_class_init (GtkTreeViewClass *class) * * Since: 3.8 */ - g_object_class_install_property (o_class, - PROP_ACTIVATE_ON_SINGLE_CLICK, - g_param_spec_boolean ("activate-on-single-click", - P_("Activate on Single Click"), - P_("Activate row on a single click"), - FALSE, - GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); + tree_view_props[PROP_ACTIVATE_ON_SINGLE_CLICK] = + g_param_spec_boolean ("activate-on-single-click", + P_("Activate on Single Click"), + P_("Activate row on a single click"), + FALSE, + GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY); + + g_object_class_install_properties (o_class, LAST_PROP, tree_view_props); /* Style properties */ #define _TREE_VIEW_EXPANDER_SIZE 14 @@ -8415,7 +8405,7 @@ gtk_tree_view_set_fixed_height_mode (GtkTreeView *tree_view, /* force a revalidation */ install_presize_handler (tree_view); - g_object_notify (G_OBJECT (tree_view), "fixed-height-mode"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_FIXED_HEIGHT_MODE]); } /** @@ -11536,7 +11526,7 @@ gtk_tree_view_set_model (GtkTreeView *tree_view, gtk_tree_view_real_set_cursor (tree_view, NULL, CURSOR_INVALID); - g_object_notify (G_OBJECT (tree_view), "model"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_MODEL]); if (tree_view->priv->selection) _gtk_tree_selection_emit_changed (tree_view->priv->selection); @@ -11799,7 +11789,7 @@ gtk_tree_view_set_headers_visible (GtkTreeView *tree_view, gtk_widget_queue_resize (GTK_WIDGET (tree_view)); - g_object_notify (G_OBJECT (tree_view), "headers-visible"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_HEADERS_VISIBLE]); } /** @@ -11857,7 +11847,7 @@ gtk_tree_view_set_headers_clickable (GtkTreeView *tree_view, } if (changed) - g_object_notify (G_OBJECT (tree_view), "headers-clickable"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_HEADERS_CLICKABLE]); } @@ -11920,7 +11910,7 @@ gtk_tree_view_set_rules_hint (GtkTreeView *tree_view, { tree_view->priv->has_rules = setting; gtk_widget_queue_draw (GTK_WIDGET (tree_view)); - g_object_notify (G_OBJECT (tree_view), "rules-hint"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_RULES_HINT]); } } @@ -11965,7 +11955,7 @@ gtk_tree_view_set_activate_on_single_click (GtkTreeView *tree_view, return; tree_view->priv->activate_on_single_click = single; - g_object_notify (G_OBJECT (tree_view), "activate-on-single-click"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_ACTIVATE_ON_SINGLE_CLICK]); } /** @@ -12421,7 +12411,7 @@ gtk_tree_view_set_expander_column (GtkTreeView *tree_view, if (tree_view->priv->expander_column != column) { tree_view->priv->expander_column = column; - g_object_notify (G_OBJECT (tree_view), "expander-column"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_EXPANDER_COLUMN]); } } @@ -13253,7 +13243,7 @@ gtk_tree_view_set_reorderable (GtkTreeView *tree_view, tree_view->priv->reorderable = reorderable; - g_object_notify (G_OBJECT (tree_view), "reorderable"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_REORDERABLE]); } static void @@ -14248,7 +14238,7 @@ unset_reorderable (GtkTreeView *tree_view) if (tree_view->priv->reorderable) { tree_view->priv->reorderable = FALSE; - g_object_notify (G_OBJECT (tree_view), "reorderable"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_REORDERABLE]); } } @@ -14849,7 +14839,7 @@ gtk_tree_view_set_enable_search (GtkTreeView *tree_view, if (tree_view->priv->enable_search != enable_search) { tree_view->priv->enable_search = enable_search; - g_object_notify (G_OBJECT (tree_view), "enable-search"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_ENABLE_SEARCH]); } } @@ -14913,7 +14903,7 @@ gtk_tree_view_set_search_column (GtkTreeView *tree_view, return; tree_view->priv->search_column = column; - g_object_notify (G_OBJECT (tree_view), "search-column"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_SEARCH_COLUMN]); } /** @@ -15792,7 +15782,7 @@ gtk_tree_view_set_hover_selection (GtkTreeView *tree_view, { tree_view->priv->hover_selection = hover; - g_object_notify (G_OBJECT (tree_view), "hover-selection"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_HOVER_SELECTION]); } } @@ -15833,7 +15823,7 @@ gtk_tree_view_set_hover_expand (GtkTreeView *tree_view, { tree_view->priv->hover_expand = expand; - g_object_notify (G_OBJECT (tree_view), "hover-expand"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_HOVER_EXPAND]); } } @@ -15874,7 +15864,7 @@ gtk_tree_view_set_rubber_banding (GtkTreeView *tree_view, { tree_view->priv->rubber_banding_enable = enable; - g_object_notify (G_OBJECT (tree_view), "rubber-banding"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_RUBBER_BANDING]); } } @@ -16054,7 +16044,7 @@ gtk_tree_view_set_grid_lines (GtkTreeView *tree_view, { gtk_widget_queue_draw (GTK_WIDGET (tree_view)); - g_object_notify (G_OBJECT (tree_view), "enable-grid-lines"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_ENABLE_GRID_LINES]); } } @@ -16141,7 +16131,7 @@ gtk_tree_view_set_enable_tree_lines (GtkTreeView *tree_view, { gtk_widget_queue_draw (GTK_WIDGET (tree_view)); - g_object_notify (G_OBJECT (tree_view), "enable-tree-lines"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_ENABLE_TREE_LINES]); } } @@ -16172,7 +16162,7 @@ gtk_tree_view_set_show_expanders (GtkTreeView *tree_view, { tree_view->priv->show_expanders = enabled; gtk_widget_queue_draw (GTK_WIDGET (tree_view)); - g_object_notify (G_OBJECT (tree_view), "show-expanders"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_SHOW_EXPANDERS]); } } @@ -16527,7 +16517,7 @@ gtk_tree_view_set_tooltip_column (GtkTreeView *tree_view, } tree_view->priv->tooltip_column = column; - g_object_notify (G_OBJECT (tree_view), "tooltip-column"); + g_object_notify_by_pspec (G_OBJECT (tree_view), tree_view_props[PROP_TOOLTIP_COLUMN]); } /** |