[gtk+] textview: Postpone magnifier creation until when needed
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] textview: Postpone magnifier creation until when needed
- Date: Mon, 10 Mar 2014 22:49:35 +0000 (UTC)
commit 7b0a5674e2b34fd66fd7d7d9a3de0b169944f01b
Author: Carlos Garnacho <carlosg gnome org>
Date: Mon Mar 10 22:00:44 2014 +0100
textview: Postpone magnifier creation until when needed
This is only necessary for touch devices, so unlikely on many setups.
gtk/gtktextview.c | 24 +++++++++++++++++++-----
1 files changed, 19 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index b3c3bd1..34d5f6c 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -1545,11 +1545,20 @@ gtk_text_view_init (GtkTextView *text_view)
G_CALLBACK (gtk_text_view_handle_dragged), text_view);
g_signal_connect (priv->text_handle, "drag-finished",
G_CALLBACK (gtk_text_view_handle_drag_finished), text_view);
+}
+
+static void
+_gtk_text_view_ensure_magnifier (GtkTextView *text_view)
+{
+ GtkTextViewPrivate *priv = text_view->priv;
+
+ if (priv->magnifier_popover)
+ return;
- priv->magnifier = _gtk_magnifier_new (widget);
+ priv->magnifier = _gtk_magnifier_new (GTK_WIDGET (text_view));
gtk_widget_set_size_request (priv->magnifier, 100, 60);
_gtk_magnifier_set_magnification (GTK_MAGNIFIER (priv->magnifier), 2.0);
- priv->magnifier_popover = gtk_popover_new (widget);
+ priv->magnifier_popover = gtk_popover_new (GTK_WIDGET (text_view));
gtk_style_context_add_class (gtk_widget_get_style_context (priv->magnifier_popover),
GTK_STYLE_CLASS_OSD);
gtk_popover_set_modal (GTK_POPOVER (priv->magnifier_popover), FALSE);
@@ -3230,7 +3239,8 @@ gtk_text_view_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_object_unref (priv->im_context);
@@ -4609,6 +4619,7 @@ gtk_text_view_show_magnifier (GtkTextView *text_view,
GtkTextViewPrivate *priv;
GtkAllocation allocation;
+ _gtk_text_view_ensure_magnifier (text_view);
gtk_widget_get_allocation (GTK_WIDGET (text_view), &allocation);
priv = text_view->priv;
@@ -4718,7 +4729,9 @@ gtk_text_view_handle_drag_finished (GtkTextHandle *handle,
GtkTextView *text_view)
{
gtk_text_view_selection_bubble_popup_set (text_view);
- gtk_widget_hide (text_view->priv->magnifier_popover);
+
+ if (text_view->priv->magnifier_popover)
+ gtk_widget_hide (text_view->priv->magnifier_popover);
}
static void
@@ -7110,7 +7123,8 @@ gtk_text_view_end_selection_drag (GtkTextView *text_view)
priv->grab_device);
priv->grab_device = NULL;
- gtk_widget_hide (priv->magnifier_popover);
+ if (priv->magnifier_popover)
+ gtk_widget_hide (priv->magnifier_popover);
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]