text view: Never show handles and popover at the same time

Hide the handles when the popover appears, and brind them back
when it disappears. This will need revisiting if we start using
the popover for mouse interaction as well, where we may not
want handles to show up.
This commit is contained in:
Matthias Clasen 2015-06-07 12:12:43 -04:00
parent 0c6205d538
commit aff47da950

View File

@ -9138,6 +9138,31 @@ gtk_text_view_get_selection_rect (GtkTextView *text_view,
rect->height = y2 - y1;
}
static void
show_or_hide_handles (GtkWidget *popover,
GParamSpec *pspec,
GtkTextView *text_view)
{
gboolean visible;
GtkTextHandle *handle;
GtkTextHandleMode mode;
visible = gtk_widget_get_visible (popover);
handle = text_view->priv->text_handle;
mode = _gtk_text_handle_get_mode (handle);
if (mode == GTK_TEXT_HANDLE_MODE_CURSOR)
{
_gtk_text_handle_set_visible (handle, GTK_TEXT_HANDLE_POSITION_CURSOR, !visible);
}
else if (mode == GTK_TEXT_HANDLE_MODE_SELECTION)
{
_gtk_text_handle_set_visible (handle, GTK_TEXT_HANDLE_POSITION_SELECTION_START, !visible);
_gtk_text_handle_set_visible (handle, GTK_TEXT_HANDLE_POSITION_SELECTION_END, !visible);
}
}
static void
activate_bubble_cb (GtkWidget *item,
GtkTextView *text_view)
@ -9211,6 +9236,8 @@ bubble_targets_received (GtkClipboard *clipboard,
GTK_STYLE_CLASS_TOUCH_SELECTION);
gtk_popover_set_position (GTK_POPOVER (priv->selection_bubble), GTK_POS_BOTTOM);
gtk_popover_set_modal (GTK_POPOVER (priv->selection_bubble), FALSE);
g_signal_connect (priv->selection_bubble, "notify::visible",
G_CALLBACK (show_or_hide_handles), text_view);
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
g_object_set (box, "margin", 10, NULL);