forked from AuroraMiddleware/gtk
entry: 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
1bd10f2a7b
commit
a219e6b4cd
@ -9683,6 +9683,31 @@ gtk_entry_popup_menu (GtkWidget *widget)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
show_or_hide_handles (GtkWidget *popover,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
GtkEntry *entry)
|
||||||
|
{
|
||||||
|
gboolean visible;
|
||||||
|
GtkTextHandle *handle;
|
||||||
|
GtkTextHandleMode mode;
|
||||||
|
|
||||||
|
visible = gtk_widget_get_visible (popover);
|
||||||
|
|
||||||
|
handle = entry->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
|
static void
|
||||||
activate_bubble_cb (GtkWidget *item,
|
activate_bubble_cb (GtkWidget *item,
|
||||||
GtkEntry *entry)
|
GtkEntry *entry)
|
||||||
@ -9756,6 +9781,8 @@ bubble_targets_received (GtkClipboard *clipboard,
|
|||||||
GTK_STYLE_CLASS_TOUCH_SELECTION);
|
GTK_STYLE_CLASS_TOUCH_SELECTION);
|
||||||
gtk_popover_set_position (GTK_POPOVER (priv->selection_bubble), GTK_POS_BOTTOM);
|
gtk_popover_set_position (GTK_POPOVER (priv->selection_bubble), GTK_POS_BOTTOM);
|
||||||
gtk_popover_set_modal (GTK_POPOVER (priv->selection_bubble), FALSE);
|
gtk_popover_set_modal (GTK_POPOVER (priv->selection_bubble), FALSE);
|
||||||
|
g_signal_connect (priv->selection_bubble, "notify::visible",
|
||||||
|
G_CALLBACK (show_or_hide_handles), entry);
|
||||||
|
|
||||||
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
|
box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);
|
||||||
g_object_set (box, "margin", 10, NULL);
|
g_object_set (box, "margin", 10, NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user