treeview: Convert to g_object_notify_by_pspec

This avoids pspec lookup overhead in g_object_notify.
This commit is contained in:
Matthias Clasen 2015-09-06 10:44:30 -04:00
parent dfe1c63c9b
commit 2da31e53b0

View File

@ -526,10 +526,6 @@ enum
enum { enum {
PROP_0, PROP_0,
PROP_MODEL, PROP_MODEL,
PROP_HADJUSTMENT,
PROP_VADJUSTMENT,
PROP_HSCROLL_POLICY,
PROP_VSCROLL_POLICY,
PROP_HEADERS_VISIBLE, PROP_HEADERS_VISIBLE,
PROP_HEADERS_CLICKABLE, PROP_HEADERS_CLICKABLE,
PROP_EXPANDER_COLUMN, PROP_EXPANDER_COLUMN,
@ -546,7 +542,13 @@ enum {
PROP_ENABLE_GRID_LINES, PROP_ENABLE_GRID_LINES,
PROP_ENABLE_TREE_LINES, PROP_ENABLE_TREE_LINES,
PROP_TOOLTIP_COLUMN, 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 */ /* object signals */
@ -920,6 +922,7 @@ static void gtk_tree_view_drag_gesture_end (GtkGestureDrag *ges
GtkTreeView *tree_view); GtkTreeView *tree_view);
static guint tree_view_signals [LAST_SIGNAL] = { 0 }; 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 */ /* 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_HADJUSTMENT, "hadjustment");
g_object_class_override_property (o_class, PROP_VADJUSTMENT, "vadjustment"); 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_HSCROLL_POLICY, "hscroll-policy");
g_object_class_override_property (o_class, PROP_VSCROLL_POLICY, "vscroll-policy"); g_object_class_override_property (o_class, PROP_VSCROLL_POLICY, "vscroll-policy");
g_object_class_install_property (o_class, tree_view_props[PROP_MODEL] =
PROP_HEADERS_VISIBLE, g_param_spec_object ("model",
g_param_spec_boolean ("headers-visible", P_("TreeView Model"),
P_("Headers Visible"), P_("The model for the tree view"),
P_("Show the column header buttons"), GTK_TYPE_TREE_MODEL,
TRUE, GTK_PARAM_READWRITE);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
g_object_class_install_property (o_class, tree_view_props[PROP_HEADERS_VISIBLE] =
PROP_HEADERS_CLICKABLE, g_param_spec_boolean ("headers-visible",
g_param_spec_boolean ("headers-clickable", P_("Headers Visible"),
P_("Headers Clickable"), P_("Show the column header buttons"),
P_("Column headers respond to click events"), TRUE,
TRUE, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
g_object_class_install_property (o_class, tree_view_props[PROP_HEADERS_CLICKABLE] =
PROP_EXPANDER_COLUMN, g_param_spec_boolean ("headers-clickable",
g_param_spec_object ("expander-column", P_("Headers Clickable"),
P_("Expander Column"), P_("Column headers respond to click events"),
P_("Set the column for the expander column"), TRUE,
GTK_TYPE_TREE_VIEW_COLUMN, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
GTK_PARAM_READWRITE));
g_object_class_install_property (o_class, tree_view_props[PROP_EXPANDER_COLUMN] =
PROP_REORDERABLE, g_param_spec_object ("expander-column",
g_param_spec_boolean ("reorderable", P_("Expander Column"),
P_("Reorderable"), P_("Set the column for the expander column"),
P_("View is reorderable"), GTK_TYPE_TREE_VIEW_COLUMN,
FALSE, GTK_PARAM_READWRITE);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
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: * GtkTreeView:rules-hint:
@ -1051,29 +1049,27 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
* Deprecated: 3.14: The theme is responsible for drawing rows * Deprecated: 3.14: The theme is responsible for drawing rows
* using zebra striping * using zebra striping
*/ */
g_object_class_install_property (o_class, tree_view_props[PROP_RULES_HINT] =
PROP_RULES_HINT, g_param_spec_boolean ("rules-hint",
g_param_spec_boolean ("rules-hint", P_("Rules Hint"),
P_("Rules Hint"), P_("Set a hint to the theme engine to draw rows in alternating colors"),
P_("Set a hint to the theme engine to draw rows in alternating colors"), FALSE,
FALSE, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY|G_PARAM_DEPRECATED);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY|G_PARAM_DEPRECATED));
g_object_class_install_property (o_class, tree_view_props[PROP_ENABLE_SEARCH] =
PROP_ENABLE_SEARCH, g_param_spec_boolean ("enable-search",
g_param_spec_boolean ("enable-search", P_("Enable Search"),
P_("Enable Search"), P_("View allows user to search through columns interactively"),
P_("View allows user to search through columns interactively"), TRUE,
TRUE, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
g_object_class_install_property (o_class, tree_view_props[PROP_SEARCH_COLUMN] =
PROP_SEARCH_COLUMN, g_param_spec_int ("search-column",
g_param_spec_int ("search-column", P_("Search Column"),
P_("Search Column"), P_("Model column to search through during interactive search"),
P_("Model column to search through during interactive search"), -1, G_MAXINT,
-1, G_MAXINT, -1, -1,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
/** /**
* GtkTreeView:fixed-height-mode: * GtkTreeView:fixed-height-mode:
@ -1086,14 +1082,13 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
* *
* Since: 2.4 * Since: 2.4
*/ */
g_object_class_install_property (o_class, tree_view_props[PROP_FIXED_HEIGHT_MODE] =
PROP_FIXED_HEIGHT_MODE, g_param_spec_boolean ("fixed-height-mode",
g_param_spec_boolean ("fixed-height-mode", P_("Fixed Height Mode"),
P_("Fixed Height Mode"), P_("Speeds up GtkTreeView by assuming that all rows have the same height"),
P_("Speeds up GtkTreeView by assuming that all rows have the same height"), FALSE,
FALSE, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
/** /**
* GtkTreeView:hover-selection: * GtkTreeView:hover-selection:
* *
@ -1107,13 +1102,12 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
* *
* Since: 2.6 * Since: 2.6
*/ */
g_object_class_install_property (o_class, tree_view_props[PROP_HOVER_SELECTION] =
PROP_HOVER_SELECTION, g_param_spec_boolean ("hover-selection",
g_param_spec_boolean ("hover-selection", P_("Hover Selection"),
P_("Hover Selection"), P_("Whether the selection should follow the pointer"),
P_("Whether the selection should follow the pointer"), FALSE,
FALSE, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
/** /**
* GtkTreeView:hover-expand: * GtkTreeView:hover-expand:
@ -1127,13 +1121,12 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
* *
* Since: 2.6 * Since: 2.6
*/ */
g_object_class_install_property (o_class, tree_view_props[PROP_HOVER_EXPAND] =
PROP_HOVER_EXPAND, g_param_spec_boolean ("hover-expand",
g_param_spec_boolean ("hover-expand", P_("Hover Expand"),
P_("Hover Expand"), P_("Whether rows should be expanded/collapsed when the pointer moves over them"),
P_("Whether rows should be expanded/collapsed when the pointer moves over them"), FALSE,
FALSE, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
/** /**
* GtkTreeView:show-expanders: * GtkTreeView:show-expanders:
@ -1142,13 +1135,12 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
* *
* Since: 2.12 * Since: 2.12
*/ */
g_object_class_install_property (o_class, tree_view_props[PROP_SHOW_EXPANDERS] =
PROP_SHOW_EXPANDERS, g_param_spec_boolean ("show-expanders",
g_param_spec_boolean ("show-expanders", P_("Show Expanders"),
P_("Show Expanders"), P_("View has expanders"),
P_("View has expanders"), TRUE,
TRUE, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
/** /**
* GtkTreeView:level-indentation: * GtkTreeView:level-indentation:
@ -1157,46 +1149,43 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
* *
* Since: 2.12 * Since: 2.12
*/ */
g_object_class_install_property (o_class, tree_view_props[PROP_LEVEL_INDENTATION] =
PROP_LEVEL_INDENTATION, g_param_spec_int ("level-indentation",
g_param_spec_int ("level-indentation", P_("Level Indentation"),
P_("Level Indentation"), P_("Extra indentation for each level"),
P_("Extra indentation for each level"), 0, G_MAXINT,
0, G_MAXINT, 0, 0,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
g_object_class_install_property (o_class, tree_view_props[PROP_RUBBER_BANDING] =
PROP_RUBBER_BANDING, g_param_spec_boolean ("rubber-banding",
g_param_spec_boolean ("rubber-banding", P_("Rubber Banding"),
P_("Rubber Banding"), P_("Whether to enable selection of multiple items by dragging the mouse pointer"),
P_("Whether to enable selection of multiple items by dragging the mouse pointer"), FALSE,
FALSE, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
g_object_class_install_property (o_class, tree_view_props[PROP_ENABLE_GRID_LINES] =
PROP_ENABLE_GRID_LINES, g_param_spec_enum ("enable-grid-lines",
g_param_spec_enum ("enable-grid-lines", P_("Enable Grid Lines"),
P_("Enable Grid Lines"), P_("Whether grid lines should be drawn in the tree view"),
P_("Whether grid lines should be drawn in the tree view"), GTK_TYPE_TREE_VIEW_GRID_LINES,
GTK_TYPE_TREE_VIEW_GRID_LINES, GTK_TREE_VIEW_GRID_LINES_NONE,
GTK_TREE_VIEW_GRID_LINES_NONE, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
g_object_class_install_property (o_class, tree_view_props[PROP_ENABLE_TREE_LINES] =
PROP_ENABLE_TREE_LINES, g_param_spec_boolean ("enable-tree-lines",
g_param_spec_boolean ("enable-tree-lines", P_("Enable Tree Lines"),
P_("Enable Tree Lines"), P_("Whether tree lines should be drawn in the tree view"),
P_("Whether tree lines should be drawn in the tree view"), FALSE,
FALSE, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
g_object_class_install_property (o_class, tree_view_props[PROP_TOOLTIP_COLUMN] =
PROP_TOOLTIP_COLUMN, g_param_spec_int ("tooltip-column",
g_param_spec_int ("tooltip-column", P_("Tooltip Column"),
P_("Tooltip Column"), P_("The column in the model containing the tooltip texts for the rows"),
P_("The column in the model containing the tooltip texts for the rows"), -1, G_MAXINT,
-1, G_MAXINT, -1, -1,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
/** /**
* GtkTreeView:activate-on-single-click: * GtkTreeView:activate-on-single-click:
@ -1206,13 +1195,14 @@ gtk_tree_view_class_init (GtkTreeViewClass *class)
* *
* Since: 3.8 * Since: 3.8
*/ */
g_object_class_install_property (o_class, tree_view_props[PROP_ACTIVATE_ON_SINGLE_CLICK] =
PROP_ACTIVATE_ON_SINGLE_CLICK, g_param_spec_boolean ("activate-on-single-click",
g_param_spec_boolean ("activate-on-single-click", P_("Activate on Single Click"),
P_("Activate on Single Click"), P_("Activate row on a single click"),
P_("Activate row on a single click"), FALSE,
FALSE, GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY));
g_object_class_install_properties (o_class, LAST_PROP, tree_view_props);
/* Style properties */ /* Style properties */
#define _TREE_VIEW_EXPANDER_SIZE 14 #define _TREE_VIEW_EXPANDER_SIZE 14
@ -8415,7 +8405,7 @@ gtk_tree_view_set_fixed_height_mode (GtkTreeView *tree_view,
/* force a revalidation */ /* force a revalidation */
install_presize_handler (tree_view); 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); 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) if (tree_view->priv->selection)
_gtk_tree_selection_emit_changed (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)); 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) 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; tree_view->priv->has_rules = setting;
gtk_widget_queue_draw (GTK_WIDGET (tree_view)); 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; return;
tree_view->priv->activate_on_single_click = single; 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) if (tree_view->priv->expander_column != column)
{ {
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; 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 static void
@ -14248,7 +14238,7 @@ unset_reorderable (GtkTreeView *tree_view)
if (tree_view->priv->reorderable) if (tree_view->priv->reorderable)
{ {
tree_view->priv->reorderable = FALSE; 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) if (tree_view->priv->enable_search != enable_search)
{ {
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; return;
tree_view->priv->search_column = column; 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; 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; 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; 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)); 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)); 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; tree_view->priv->show_expanders = enabled;
gtk_widget_queue_draw (GTK_WIDGET (tree_view)); 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; 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]);
} }
/** /**