forked from AuroraMiddleware/gtk
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:
parent
0c6205d538
commit
aff47da950
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user