[gtk+] entry: postpone magnifier creation until when needed
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] entry: postpone magnifier creation until when needed
- Date: Mon, 10 Mar 2014 22:49:20 +0000 (UTC)
commit 45d9076f495d5259018b03e7eca1e519a391199e
Author: Carlos Garnacho <carlosg gnome org>
Date: Mon Mar 10 21:54:31 2014 +0100
entry: postpone magnifier creation until when needed
gtk/gtkentry.c | 22 +++++++++++++++++++---
1 files changed, 19 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
index 95e2780..68a976b 100644
--- a/gtk/gtkentry.c
+++ b/gtk/gtkentry.c
@@ -2695,6 +2695,15 @@ gtk_entry_init (GtkEntry *entry)
G_CALLBACK (gtk_entry_handle_dragged), entry);
g_signal_connect (priv->text_handle, "drag-finished",
G_CALLBACK (gtk_entry_handle_drag_finished), entry);
+}
+
+static void
+gtk_entry_ensure_magnifier (GtkEntry *entry)
+{
+ GtkEntryPrivate *priv = entry->priv;
+
+ if (priv->magnifier_popover)
+ return;
priv->magnifier = _gtk_magnifier_new (GTK_WIDGET (entry));
gtk_widget_set_size_request (priv->magnifier, 100, 60);
@@ -2946,7 +2955,9 @@ gtk_entry_finalize (GObject *object)
if (priv->selection_bubble)
gtk_widget_destroy (priv->selection_bubble);
- gtk_widget_destroy (priv->magnifier_popover);
+ if (priv->magnifier_popover)
+ gtk_widget_destroy (priv->magnifier_popover);
+
g_object_unref (priv->text_handle);
g_free (priv->placeholder_text);
g_free (priv->im_module);
@@ -4465,7 +4476,8 @@ gtk_entry_button_release (GtkWidget *widget,
else if (is_touchscreen)
{
gtk_entry_selection_bubble_popup_set (entry);
- gtk_widget_hide (priv->magnifier_popover);
+ if (priv->magnifier_popover)
+ gtk_widget_hide (priv->magnifier_popover);
}
priv->button = 0;
@@ -4498,6 +4510,8 @@ gtk_entry_show_magnifier (GtkEntry *entry,
cairo_rectangle_int_t rect;
GtkEntryPrivate *priv;
+ gtk_entry_ensure_magnifier (entry);
+
gtk_widget_get_allocation (GTK_WIDGET (entry), &allocation);
get_icon_allocations (entry, &primary, &secondary);
@@ -6574,7 +6588,9 @@ gtk_entry_handle_drag_finished (GtkTextHandle *handle,
GtkEntry *entry)
{
gtk_entry_selection_bubble_popup_set (entry);
- gtk_widget_hide (entry->priv->magnifier_popover);
+
+ if (entry->priv->magnifier_popover)
+ gtk_widget_hide (entry->priv->magnifier_popover);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]