summaryrefslogtreecommitdiff
path: root/gtk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2015-09-12 09:14:47 -0400
committerMatthias Clasen <mclasen@redhat.com>2015-09-12 12:50:39 -0400
commit29c799a1e77e441160892366355e9a55aed5df40 (patch)
tree4cfdd47fc72d62a5537039c619666815ad95306c /gtk
parent66f0bdee0adf422f23b5e0bb5addd6256958eb82 (diff)
downloadgtk+-29c799a1e77e441160892366355e9a55aed5df40.tar.gz
Use g_object_get_qdata instead of g_object_get_data
This is less expensive.
Diffstat (limited to 'gtk')
-rw-r--r--gtk/deprecated/gtkstyle.c14
-rw-r--r--gtk/gtkcssnode.c13
-rw-r--r--gtk/gtklabel.c46
-rw-r--r--gtk/gtksettings.c15
-rw-r--r--gtk/gtktooltip.c48
5 files changed, 80 insertions, 56 deletions
diff --git a/gtk/deprecated/gtkstyle.c b/gtk/deprecated/gtkstyle.c
index a2405a113a..2cad590d26 100644
--- a/gtk/deprecated/gtkstyle.c
+++ b/gtk/deprecated/gtkstyle.c
@@ -366,6 +366,8 @@ static const GdkColor gtk_default_insensitive_bg = { 0, GTK_GRAY };
static const GdkColor gtk_default_selected_base = { 0, GTK_BLUE };
static const GdkColor gtk_default_active_base = { 0, GTK_VERY_DARK_GRAY };
+static GQuark quark_default_style;
+
/* --- signals --- */
static guint realize_signal = 0;
static guint unrealize_signal = 0;
@@ -507,6 +509,8 @@ gtk_style_class_init (GtkStyleClass *klass)
NULL, NULL,
_gtk_marshal_VOID__VOID,
G_TYPE_NONE, 0);
+
+ quark_default_style = g_quark_from_static_string ("gtk-legacy-default-style");
}
static void
@@ -4015,14 +4019,14 @@ gtk_widget_get_default_style_for_screen (GdkScreen *screen)
{
GtkStyle *default_style;
- default_style = g_object_get_data (G_OBJECT (screen), "gtk-legacy-default-style");
+ default_style = g_object_get_qdata (G_OBJECT (screen), quark_default_style);
if (default_style == NULL)
{
default_style = gtk_style_new ();
- g_object_set_data_full (G_OBJECT (screen),
- I_("gtk-legacy-default-style"),
- default_style,
- g_object_unref);
+ g_object_set_qdata_full (G_OBJECT (screen),
+ quark_default_style,
+ default_style,
+ g_object_unref);
}
return default_style;
diff --git a/gtk/gtkcssnode.c b/gtk/gtkcssnode.c
index 67236b732c..660315550f 100644
--- a/gtk/gtkcssnode.c
+++ b/gtk/gtkcssnode.c
@@ -52,6 +52,8 @@ enum {
static guint cssnode_signals[LAST_SIGNAL] = { 0 };
static GParamSpec *cssnode_properties[NUM_PROPERTIES];
+static GQuark quark_global_cache;
+
static GtkStyleProviderPrivate *
gtk_css_node_get_style_provider_or_null (GtkCssNode *cssnode)
{
@@ -214,7 +216,7 @@ lookup_in_global_parent_cache (GtkCssNode *node,
!may_use_global_parent_cache (node))
return NULL;
- cache = g_object_get_data (G_OBJECT (parent), "gtk-global-cache");
+ cache = g_object_get_qdata (G_OBJECT (parent), quark_global_cache);
if (cache == NULL)
return NULL;
@@ -289,14 +291,17 @@ store_in_global_parent_cache (GtkCssNode *node,
if (!may_be_stored_in_parent_cache (style))
return;
- cache = g_object_get_data (G_OBJECT (parent), "gtk-global-cache");
+ cache = g_object_get_qdata (G_OBJECT (parent), quark_global_cache);
if (cache == NULL)
{
cache = g_hash_table_new_full (gtk_global_parent_cache_hash,
gtk_global_parent_cache_equal,
gtk_global_parent_cache_free,
g_object_unref);
- g_object_set_data_full (G_OBJECT (parent), "gtk-global-cache", cache, (GDestroyNotify) g_hash_table_destroy);
+ g_object_set_qdata_full (G_OBJECT (parent),
+ quark_global_cache,
+ cache,
+ (GDestroyNotify) g_hash_table_destroy);
}
g_hash_table_insert (cache,
@@ -522,6 +527,8 @@ gtk_css_node_class_init (GtkCssNodeClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ quark_global_cache = g_quark_from_static_string ("gtk-global-cache");
+
object_class->get_property = gtk_css_node_get_property;
object_class->set_property = gtk_css_node_set_property;
object_class->dispose = gtk_css_node_dispose;
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 9319c7c27b..6a639fdcaa 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -364,6 +364,12 @@ static GParamSpec *label_props[NUM_PROPERTIES] = { NULL, };
static guint signals[LAST_SIGNAL] = { 0 };
+static GQuark quark_shortcuts_connected;
+static GQuark quark_mnemonic_menu;
+static GQuark quark_mnemonics_visible_connected;
+static GQuark quark_gtk_signal;
+static GQuark quark_link;
+
static void gtk_label_set_property (GObject *object,
guint prop_id,
const GValue *value,
@@ -700,7 +706,7 @@ gtk_label_class_init (GtkLabelClass *class)
* Since: 2.18
*/
signals[ACTIVATE_CURRENT_LINK] =
- g_signal_new_class_handler ("activate-current-link",
+ g_signal_new_class_handler (I_("activate-current-link"),
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_CALLBACK (gtk_label_activate_current_link),
@@ -722,7 +728,7 @@ gtk_label_class_init (GtkLabelClass *class)
* Since: 2.18
*/
signals[ACTIVATE_LINK] =
- g_signal_new ("activate-link",
+ g_signal_new (I_("activate-link"),
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GtkLabelClass, activate_link),
@@ -1139,6 +1145,12 @@ gtk_label_class_init (GtkLabelClass *class)
"activate-current-link", 0);
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_LABEL_ACCESSIBLE);
+
+ quark_shortcuts_connected = g_quark_from_static_string ("gtk-label-shortcuts-connected");
+ quark_mnemonic_menu = g_quark_from_static_string ("gtk-mnemonic-menu");
+ quark_mnemonics_visible_connected = g_quark_from_static_string ("gtk-label-mnemonics-visible-connected");
+ quark_gtk_signal = g_quark_from_static_string ("gtk-signal");
+ quark_link = g_quark_from_static_string ("link");
}
static void
@@ -1795,7 +1807,7 @@ gtk_label_setup_mnemonic (GtkLabel *label,
GtkWidget *toplevel;
GtkWidget *mnemonic_menu;
- mnemonic_menu = g_object_get_data (G_OBJECT (label), "gtk-mnemonic-menu");
+ mnemonic_menu = g_object_get_qdata (G_OBJECT (label), quark_mnemonic_menu);
if (last_key != GDK_KEY_VoidSymbol)
{
@@ -1846,7 +1858,7 @@ gtk_label_setup_mnemonic (GtkLabel *label,
}
done:
- g_object_set_data (G_OBJECT (label), I_("gtk-mnemonic-menu"), mnemonic_menu);
+ g_object_set_qdata (G_OBJECT (label), quark_mnemonic_menu, mnemonic_menu);
}
static void
@@ -1965,8 +1977,7 @@ gtk_label_screen_changed (GtkWidget *widget,
settings = gtk_widget_get_settings (widget);
shortcuts_connected =
- GPOINTER_TO_INT (g_object_get_data (G_OBJECT (settings),
- "gtk-label-shortcuts-connected"));
+ GPOINTER_TO_INT (g_object_get_qdata (G_OBJECT (settings), quark_shortcuts_connected));
if (! shortcuts_connected)
{
@@ -1977,7 +1988,7 @@ gtk_label_screen_changed (GtkWidget *widget,
G_CALLBACK (label_shortcut_setting_changed),
NULL);
- g_object_set_data (G_OBJECT (settings), "gtk-label-shortcuts-connected",
+ g_object_set_qdata (G_OBJECT (settings), quark_shortcuts_connected,
GINT_TO_POINTER (TRUE));
}
@@ -5027,8 +5038,7 @@ connect_mnemonics_visible_notify (GtkLabel *label)
gtk_window_get_mnemonics_visible (GTK_WINDOW (toplevel));
connected =
- GPOINTER_TO_INT (g_object_get_data (G_OBJECT (toplevel),
- "gtk-label-mnemonics-visible-connected"));
+ GPOINTER_TO_INT (g_object_get_qdata (G_OBJECT (toplevel), quark_mnemonics_visible_connected));
if (!connected)
{
@@ -5036,9 +5046,9 @@ connect_mnemonics_visible_notify (GtkLabel *label)
"notify::mnemonics-visible",
G_CALLBACK (label_mnemonics_visible_changed),
label);
- g_object_set_data (G_OBJECT (toplevel),
- "gtk-label-mnemonics-visible-connected",
- GINT_TO_POINTER (1));
+ g_object_set_qdata (G_OBJECT (toplevel),
+ quark_mnemonics_visible_connected,
+ GINT_TO_POINTER (1));
}
}
@@ -6440,7 +6450,7 @@ static void
activate_cb (GtkWidget *menuitem,
GtkLabel *label)
{
- const gchar *signal = g_object_get_data (G_OBJECT (menuitem), "gtk-signal");
+ const gchar *signal = g_object_get_qdata (G_OBJECT (menuitem), quark_gtk_signal);
g_signal_emit_by_name (label, signal);
}
@@ -6453,7 +6463,7 @@ append_action_signal (GtkLabel *label,
{
GtkWidget *menuitem = gtk_menu_item_new_with_mnemonic (text);
- g_object_set_data (G_OBJECT (menuitem), I_("gtk-signal"), (char *)signal);
+ g_object_set_qdata (G_OBJECT (menuitem), quark_gtk_signal, (char *)signal);
g_signal_connect (menuitem, "activate",
G_CALLBACK (activate_cb), label);
@@ -6518,7 +6528,7 @@ open_link_activate_cb (GtkMenuItem *menuitem,
{
GtkLabelLink *link;
- link = g_object_get_data (G_OBJECT (menuitem), "link");
+ link = g_object_get_qdata (G_OBJECT (menuitem), quark_link);
emit_activate_link (label, link);
}
@@ -6529,7 +6539,7 @@ copy_link_activate_cb (GtkMenuItem *menuitem,
GtkLabelLink *link;
GtkClipboard *clipboard;
- link = g_object_get_data (G_OBJECT (menuitem), "link");
+ link = g_object_get_qdata (G_OBJECT (menuitem), quark_link);
clipboard = gtk_widget_get_clipboard (GTK_WIDGET (label), GDK_SELECTION_CLIPBOARD);
gtk_clipboard_set_text (clipboard, link->uri, -1);
}
@@ -6581,7 +6591,7 @@ gtk_label_do_popup (GtkLabel *label,
{
/* Open Link */
menuitem = gtk_menu_item_new_with_mnemonic (_("_Open Link"));
- g_object_set_data (G_OBJECT (menuitem), "link", link);
+ g_object_set_qdata (G_OBJECT (menuitem), quark_link, link);
gtk_widget_show (menuitem);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
@@ -6590,7 +6600,7 @@ gtk_label_do_popup (GtkLabel *label,
/* Copy Link Address */
menuitem = gtk_menu_item_new_with_mnemonic (_("Copy _Link Address"));
- g_object_set_data (G_OBJECT (menuitem), "link", link);
+ g_object_set_qdata (G_OBJECT (menuitem), quark_link, link);
gtk_widget_show (menuitem);
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
diff --git a/gtk/gtksettings.c b/gtk/gtksettings.c
index 9fc1d38dac..7f52d61c1f 100644
--- a/gtk/gtksettings.c
+++ b/gtk/gtksettings.c
@@ -269,6 +269,7 @@ static const gchar default_color_palette[] =
/* --- variables --- */
static GQuark quark_property_parser = 0;
+static GQuark quark_gtk_settings = 0;
static GSList *object_list = NULL;
static guint class_n_properties = 0;
@@ -367,6 +368,8 @@ gtk_settings_class_init (GtkSettingsClass *class)
gobject_class->notify = gtk_settings_notify;
quark_property_parser = g_quark_from_static_string ("gtk-rc-property-parser");
+ quark_gtk_settings = g_quark_from_static_string ("gtk-settings");
+
result = settings_install_property_parser (class,
g_param_spec_int ("gtk-double-click-time",
P_("Double Click Time"),
@@ -1849,7 +1852,7 @@ gtk_settings_get_for_screen (GdkScreen *screen)
g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
- settings = g_object_get_data (G_OBJECT (screen), "gtk-settings");
+ settings = g_object_get_qdata (G_OBJECT (screen), quark_gtk_settings);
if (!settings)
{
#ifdef GDK_WINDOWING_QUARTZ
@@ -1874,8 +1877,10 @@ gtk_settings_get_for_screen (GdkScreen *screen)
#endif
settings = g_object_new (GTK_TYPE_SETTINGS, NULL);
settings->priv->screen = screen;
- g_object_set_data_full (G_OBJECT (screen), I_("gtk-settings"),
- settings, g_object_unref);
+ g_object_set_qdata_full (G_OBJECT (screen),
+ quark_gtk_settings,
+ settings,
+ g_object_unref);
settings_init_style (settings);
settings_update_modules (settings);
@@ -2231,7 +2236,7 @@ settings_install_property_parser (GtkSettingsClass *class,
priv->property_values[class_n_properties - 1].source = GTK_SETTINGS_SOURCE_DEFAULT;
g_object_notify_by_pspec (G_OBJECT (settings), pspec);
- qvalue = g_datalist_get_data (&priv->queued_settings, pspec->name);
+ qvalue = g_datalist_id_dup_data (&priv->queued_settings, g_param_spec_get_name_quark (pspec), NULL, NULL);
if (qvalue)
apply_queued_setting (settings, pspec, qvalue);
}
@@ -2343,7 +2348,7 @@ gtk_settings_set_property_value_internal (GtkSettings *settings,
name_quark = g_quark_from_string (name);
g_free (name);
- qvalue = g_datalist_id_get_data (&priv->queued_settings, name_quark);
+ qvalue = g_datalist_id_dup_data (&priv->queued_settings, name_quark, NULL, NULL);
if (!qvalue)
{
qvalue = g_slice_new0 (GtkSettingsValuePrivate);
diff --git a/gtk/gtktooltip.c b/gtk/gtktooltip.c
index a5e4f55ce6..45e3e59f26 100644
--- a/gtk/gtktooltip.c
+++ b/gtk/gtktooltip.c
@@ -150,6 +150,7 @@ static void gtk_tooltip_display_closed (GdkDisplay *display,
static void gtk_tooltip_set_last_window (GtkTooltip *tooltip,
GdkWindow *window);
+static GQuark quark_current_tooltip;
G_DEFINE_TYPE (GtkTooltip, gtk_tooltip, G_TYPE_OBJECT);
@@ -161,6 +162,8 @@ gtk_tooltip_class_init (GtkTooltipClass *klass)
object_class = G_OBJECT_CLASS (klass);
object_class->dispose = gtk_tooltip_dispose;
+
+ quark_current_tooltip = g_quark_from_static_string ("gdk-display-current-tooltip");
}
static void
@@ -868,6 +871,7 @@ static gint
tooltip_browse_mode_expired (gpointer data)
{
GtkTooltip *tooltip;
+ GdkDisplay *display;
tooltip = GTK_TOOLTIP (data);
@@ -875,8 +879,8 @@ tooltip_browse_mode_expired (gpointer data)
tooltip->browse_mode_timeout_id = 0;
/* destroy tooltip */
- g_object_set_data (G_OBJECT (gtk_widget_get_display (tooltip->window)),
- "gdk-display-current-tooltip", NULL);
+ display = gtk_widget_get_display (tooltip->window);
+ g_object_set_qdata (G_OBJECT (display), quark_current_tooltip, NULL);
return FALSE;
}
@@ -886,7 +890,7 @@ gtk_tooltip_display_closed (GdkDisplay *display,
gboolean was_error,
GtkTooltip *tooltip)
{
- g_object_set_data (G_OBJECT (display), "gdk-display-current-tooltip", NULL);
+ g_object_set_qdata (G_OBJECT (display), quark_current_tooltip, NULL);
}
static void
@@ -1209,8 +1213,7 @@ gtk_tooltip_show_tooltip (GdkDisplay *display)
GtkTooltip *tooltip;
gboolean return_value = FALSE;
- tooltip = g_object_get_data (G_OBJECT (display),
- "gdk-display-current-tooltip");
+ tooltip = g_object_get_qdata (G_OBJECT (display), quark_current_tooltip);
if (tooltip->keyboard_mode_enabled)
{
@@ -1338,8 +1341,7 @@ tooltip_popup_timeout (gpointer data)
GtkTooltip *tooltip;
display = GDK_DISPLAY (data);
- tooltip = g_object_get_data (G_OBJECT (display),
- "gdk-display-current-tooltip");
+ tooltip = g_object_get_qdata (G_OBJECT (display), quark_current_tooltip);
/* This usually does not happen. However, it does occur in language
* bindings were reference counting of objects behaves differently.
@@ -1360,8 +1362,7 @@ gtk_tooltip_start_delay (GdkDisplay *display)
guint timeout;
GtkTooltip *tooltip;
- tooltip = g_object_get_data (G_OBJECT (display),
- "gdk-display-current-tooltip");
+ tooltip = g_object_get_qdata (G_OBJECT (display), quark_current_tooltip);
if (!tooltip || GTK_TOOLTIP_VISIBLE (tooltip))
return;
@@ -1392,8 +1393,7 @@ _gtk_tooltip_focus_in (GtkWidget *widget)
/* Get current tooltip for this display */
display = gtk_widget_get_display (widget);
- tooltip = g_object_get_data (G_OBJECT (display),
- "gdk-display-current-tooltip");
+ tooltip = g_object_get_qdata (G_OBJECT (display), quark_current_tooltip);
/* Check if keyboard mode is enabled at this moment */
if (!tooltip || !tooltip->keyboard_mode_enabled)
@@ -1444,8 +1444,7 @@ _gtk_tooltip_focus_out (GtkWidget *widget)
/* Get current tooltip for this display */
display = gtk_widget_get_display (widget);
- tooltip = g_object_get_data (G_OBJECT (display),
- "gdk-display-current-tooltip");
+ tooltip = g_object_get_qdata (G_OBJECT (display), quark_current_tooltip);
if (!tooltip || !tooltip->keyboard_mode_enabled)
return;
@@ -1466,15 +1465,15 @@ _gtk_tooltip_toggle_keyboard_mode (GtkWidget *widget)
GtkTooltip *tooltip;
display = gtk_widget_get_display (widget);
- tooltip = g_object_get_data (G_OBJECT (display),
- "gdk-display-current-tooltip");
+ tooltip = g_object_get_qdata (G_OBJECT (display), quark_current_tooltip);
if (!tooltip)
{
tooltip = g_object_new (GTK_TYPE_TOOLTIP, NULL);
- g_object_set_data_full (G_OBJECT (display),
- "gdk-display-current-tooltip",
- tooltip, g_object_unref);
+ g_object_set_qdata_full (G_OBJECT (display),
+ quark_current_tooltip,
+ tooltip,
+ g_object_unref);
g_signal_connect (display, "closed",
G_CALLBACK (gtk_tooltip_display_closed),
tooltip);
@@ -1506,8 +1505,7 @@ _gtk_tooltip_hide (GtkWidget *widget)
GtkTooltip *tooltip;
display = gtk_widget_get_display (widget);
- tooltip = g_object_get_data (G_OBJECT (display),
- "gdk-display-current-tooltip");
+ tooltip = g_object_get_qdata (G_OBJECT (display), quark_current_tooltip);
if (!tooltip || !GTK_TOOLTIP_VISIBLE (tooltip) || !tooltip->tooltip_widget)
return;
@@ -1550,8 +1548,7 @@ _gtk_tooltip_handle_event (GdkEvent *event)
/* Returns coordinates relative to has_tooltip_widget's allocation. */
has_tooltip_widget = find_topmost_widget_coords_from_event (event, &x, &y);
display = gdk_window_get_display (event->any.window);
- current_tooltip = g_object_get_data (G_OBJECT (display),
- "gdk-display-current-tooltip");
+ current_tooltip = g_object_get_qdata (G_OBJECT (display), quark_current_tooltip);
if (current_tooltip)
{
@@ -1657,9 +1654,10 @@ _gtk_tooltip_handle_event (GdkEvent *event)
{
/* Need a new tooltip for this display */
current_tooltip = g_object_new (GTK_TYPE_TOOLTIP, NULL);
- g_object_set_data_full (G_OBJECT (display),
- "gdk-display-current-tooltip",
- current_tooltip, g_object_unref);
+ g_object_set_qdata_full (G_OBJECT (display),
+ quark_current_tooltip,
+ current_tooltip,
+ g_object_unref);
g_signal_connect (display, "closed",
G_CALLBACK (gtk_tooltip_display_closed),
current_tooltip);