[gtk+/touch-text-selection] Correct some editability/sensitivity checks
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/touch-text-selection] Correct some editability/sensitivity checks
- Date: Sun, 2 Sep 2012 15:30:31 +0000 (UTC)
commit b79946956bc8395ef6d5ad24d41a6f9ee65dd3f0
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Sep 2 11:06:50 2012 -0400
Correct some editability/sensitivity checks
I was getting touch handles when double-clicking with a mouse.
And I was not getting touch handles when clicking around in a
textview that is sensitive, but not editable.
Correct these checks: A editable text view can have a cursor
and selections, and when in touchscreen mode, we need to show
handles for them.
gtk/gtktextview.c | 31 +++++++++++++++++++------------
1 files changed, 19 insertions(+), 12 deletions(-)
---
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index fc2cc45..f316108 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -4585,7 +4585,7 @@ _gtk_text_view_update_handles (GtkTextView *text_view,
if (mode == GTK_TEXT_HANDLE_MODE_SELECTION &&
gtk_text_iter_compare (&cursor, &bound) == 0)
{
- mode = (priv->editable) ? GTK_TEXT_HANDLE_MODE_CURSOR :
+ mode = gtk_widget_is_sensitive (GTK_WIDGET (text_view)) ? GTK_TEXT_HANDLE_MODE_CURSOR :
GTK_TEXT_HANDLE_MODE_NONE;
}
@@ -4779,6 +4779,8 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
{
GtkTextView *text_view;
GtkTextViewPrivate *priv;
+ GdkDevice *device;
+ gboolean is_touchscreen;
text_view = GTK_TEXT_VIEW (widget);
priv = text_view->priv;
@@ -4802,16 +4804,14 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
gtk_text_layout_spew (GTK_TEXT_VIEW (widget)->layout);
#endif
+ device = gdk_event_get_source_device ((GdkEvent *) event);
+ is_touchscreen = test_touchscreen ||
+ gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN;
+
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))
@@ -4850,7 +4850,7 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
gtk_text_view_start_selection_drag (text_view, &iter, event);
- if (priv->editable && is_touchscreen)
+ if (gtk_widget_is_sensitive (widget) && is_touchscreen)
mode = GTK_TEXT_HANDLE_MODE_CURSOR;
else
mode = GTK_TEXT_HANDLE_MODE_NONE;
@@ -4886,6 +4886,7 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
event->button == GDK_BUTTON_PRIMARY)
{
GtkTextIter iter;
+ GtkTextHandleMode mode;
gtk_text_view_end_selection_drag (text_view);
@@ -4893,12 +4894,18 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
&iter,
event->x + priv->xoffset,
event->y + priv->yoffset);
-
+
gtk_text_view_start_selection_drag (text_view, &iter, event);
- _gtk_text_view_update_handles (text_view, GTK_TEXT_HANDLE_MODE_SELECTION);
+
+ if (gtk_widget_is_sensitive (widget) && is_touchscreen)
+ mode = GTK_TEXT_HANDLE_MODE_SELECTION;
+ else
+ mode = GTK_TEXT_HANDLE_MODE_NONE;
+
+ _gtk_text_view_update_handles (text_view, mode);
return TRUE;
}
-
+
return FALSE;
}
@@ -4944,7 +4951,7 @@ gtk_text_view_button_release_event (GtkWidget *widget, GdkEventButton *event)
device = gdk_event_get_source_device ((GdkEvent *) event);
- if (priv->editable &&
+ if (gtk_widget_is_sensitive (widget) &&
(test_touchscreen ||
gdk_device_get_source (device) == GDK_SOURCE_TOUCHSCREEN))
mode = GTK_TEXT_HANDLE_MODE_CURSOR;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]