[gtk+/touch-text-selection] textview: Optionally update handles on focus in
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/touch-text-selection] textview: Optionally update handles on focus in
- Date: Fri, 24 Aug 2012 17:16:04 +0000 (UTC)
commit 2a537b5b8b99051326a540d7a69940fe67665355
Author: Carlos Garnacho <carlos lanedo com>
Date: Fri Aug 24 19:13:31 2012 +0200
textview: Optionally update handles on focus in
This is so toplevels being moved/resized don't leave a selection
with no possibility of being further manipulated
gtk/gtktextview.c | 19 ++++++++++++++-----
1 files changed, 14 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index c2df3a3..43e3f23 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -234,6 +234,7 @@ struct _GtkTextViewPrivate
guint cursor_handle_dragged : 1;
guint selection_handle_dragged : 1;
+ guint update_handles_on_focus : 1
};
struct _GtkTextPendingScroll
@@ -4789,8 +4790,16 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
if (event->type == GDK_BUTTON_PRESS)
{
+ GdkDevice *device;
+ gboolean is_touchscreen;
+
gtk_text_view_reset_im_context (text_view);
+ device = gdk_event_get_source_device ((GdkEvent *) event);
+ is_touchscreen = test_touchscreen ||
+ gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN;
+ priv->update_handles_on_focus = is_touchscreen;
+
if (gdk_event_triggers_context_menu ((GdkEvent *) event))
{
gtk_text_view_do_popup (text_view, event);
@@ -4824,14 +4833,10 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
else
{
GtkTextHandleMode mode;
- GdkDevice *device;
gtk_text_view_start_selection_drag (text_view, &iter, event);
- device = gdk_event_get_source_device ((GdkEvent *) event);
- if (priv->editable &&
- (test_touchscreen ||
- gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN))
+ if (priv->editable && is_touchscreen)
mode = GTK_TEXT_HANDLE_MODE_CURSOR;
else
mode = GTK_TEXT_HANDLE_MODE_NONE;
@@ -4980,6 +4985,10 @@ gtk_text_view_focus_in_event (GtkWidget *widget, GdkEventFocus *event)
gtk_im_context_focus_in (priv->im_context);
}
+ if (priv->update_handles_on_focus &&
+ gtk_text_buffer_get_selection_bounds (get_buffer (text_view), NULL, NULL))
+ _gtk_text_view_update_handles (text_view, GTK_TEXT_HANDLE_MODE_SELECTION);
+
return FALSE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]