summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2012-08-16 14:29:38 -0400
committerMatthias Clasen <mclasen@redhat.com>2012-08-20 18:54:22 -0400
commit7d1c1a8d20f5b7f8dbda3004bd3cd01ff2600684 (patch)
treed026ebd4f63bf118e4d9b467b260d6113e437aa8
parenteaaee081b1a8f2a3233608af2789eb6817151d38 (diff)
downloadgtk+-7d1c1a8d20f5b7f8dbda3004bd3cd01ff2600684.tar.gz
GtkTextView: Add input purpose and hints
Add input-purpose and input-hints properties and pass these through to the GtkIMContext. https://bugzilla.gnome.org/show_bug.cgi?id=651244
-rw-r--r--gtk/gtk.symbols4
-rw-r--r--gtk/gtktextview.c104
-rw-r--r--gtk/gtktextview.h13
3 files changed, 118 insertions, 3 deletions
diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols
index b3e37d0995..ac5197493c 100644
--- a/gtk/gtk.symbols
+++ b/gtk/gtk.symbols
@@ -3008,6 +3008,8 @@ gtk_text_view_get_default_attributes
gtk_text_view_get_editable
gtk_text_view_get_hadjustment
gtk_text_view_get_indent
+gtk_text_view_get_input_hints
+gtk_text_view_get_input_purpose
gtk_text_view_get_iter_at_location
gtk_text_view_get_iter_at_position
gtk_text_view_get_iter_location
@@ -3044,6 +3046,8 @@ gtk_text_view_set_buffer
gtk_text_view_set_cursor_visible
gtk_text_view_set_editable
gtk_text_view_set_indent
+gtk_text_view_set_input_hints
+gtk_text_view_set_input_purpose
gtk_text_view_set_justification
gtk_text_view_set_left_margin
gtk_text_view_set_overwrite
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
index 66116733c0..59379260a4 100644
--- a/gtk/gtktextview.c
+++ b/gtk/gtktextview.c
@@ -281,7 +281,9 @@ enum
PROP_HADJUSTMENT,
PROP_VADJUSTMENT,
PROP_HSCROLL_POLICY,
- PROP_VSCROLL_POLICY
+ PROP_VSCROLL_POLICY,
+ PROP_INPUT_PURPOSE,
+ PROP_INPUT_HINTS
};
static void gtk_text_view_finalize (GObject *object);
@@ -777,7 +779,7 @@ gtk_text_view_class_init (GtkTextViewClass *klass)
/**
* GtkTextView:im-module:
*
- * Which IM (input method) module should be used for this entry.
+ * Which IM (input method) module should be used for this text_view.
* See #GtkIMContext.
*
* Setting this to a non-%NULL value overrides the
@@ -794,6 +796,24 @@ gtk_text_view_class_init (GtkTextViewClass *klass)
NULL,
GTK_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class,
+ PROP_INPUT_PURPOSE,
+ g_param_spec_enum ("input-purpose",
+ P_("Purpose"),
+ P_("Purpose of the text field"),
+ GTK_TYPE_INPUT_PURPOSE,
+ GTK_INPUT_PURPOSE_FREE_FORM,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class,
+ PROP_INPUT_HINTS,
+ g_param_spec_flags ("input-hints",
+ P_("hints"),
+ P_("Hints for the text field behaviour"),
+ GTK_TYPE_INPUT_HINTS,
+ GTK_INPUT_HINT_NONE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
/* GtkScrollable interface */
g_object_class_override_property (gobject_class, PROP_HADJUSTMENT, "hadjustment");
g_object_class_override_property (gobject_class, PROP_VADJUSTMENT, "vadjustment");
@@ -1055,7 +1075,7 @@ gtk_text_view_class_init (GtkTextViewClass *klass)
/**
* GtkTextView::populate-popup:
- * @entry: The text view on which the signal is emitted
+ * @text_view: The text view on which the signal is emitted
* @menu: the menu that is being populated
*
* The ::populate-popup signal gets emitted before showing the
@@ -3170,6 +3190,14 @@ gtk_text_view_set_property (GObject *object,
gtk_widget_queue_resize (GTK_WIDGET (text_view));
break;
+ case PROP_INPUT_PURPOSE:
+ gtk_text_view_set_input_purpose (text_view, g_value_get_enum (value));
+ break;
+
+ case PROP_INPUT_HINTS:
+ gtk_text_view_set_input_hints (text_view, g_value_get_flags (value));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -3266,6 +3294,14 @@ gtk_text_view_get_property (GObject *object,
g_value_set_enum (value, priv->vscroll_policy);
break;
+ case PROP_INPUT_PURPOSE:
+ g_value_set_enum (value, gtk_text_view_get_input_purpose (text_view));
+ break;
+
+ case PROP_INPUT_HINTS:
+ g_value_set_flags (value, gtk_text_view_get_input_hints (text_view));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -9631,3 +9667,65 @@ gtk_text_view_move_visually (GtkTextView *text_view,
return gtk_text_layout_move_iter_visually (text_view->priv->layout, iter, count);
}
+
+void
+gtk_text_view_set_input_purpose (GtkTextView *text_view,
+ GtkInputPurpose purpose)
+
+{
+ g_return_if_fail (GTK_IS_TEXT_VIEW (text_view));
+
+ if (gtk_text_view_get_input_purpose (text_view) != purpose)
+ {
+ g_object_set (G_OBJECT (text_view->priv->im_context),
+ "input-purpose", purpose,
+ NULL);
+
+ g_object_notify (G_OBJECT (text_view), "input-purpose");
+ }
+}
+
+GtkInputPurpose
+gtk_text_view_get_input_purpose (GtkTextView *text_view)
+{
+ GtkInputPurpose purpose;
+
+ g_return_val_if_fail (GTK_IS_TEXT_VIEW (text_view), GTK_INPUT_PURPOSE_FREE_FORM);
+
+ g_object_get (G_OBJECT (text_view->priv->im_context),
+ "input-purpose", &purpose,
+ NULL);
+
+ return purpose;
+}
+
+void
+gtk_text_view_set_input_hints (GtkTextView *text_view,
+ GtkInputHints hints)
+
+{
+ g_return_if_fail (GTK_IS_TEXT_VIEW (text_view));
+
+ if (gtk_text_view_get_input_hints (text_view) != hints)
+ {
+ g_object_set (G_OBJECT (text_view->priv->im_context),
+ "input-hints", hints,
+ NULL);
+
+ g_object_notify (G_OBJECT (text_view), "input-hints");
+ }
+}
+
+GtkInputHints
+gtk_text_view_get_input_hints (GtkTextView *text_view)
+{
+ GtkInputHints hints;
+
+ g_return_val_if_fail (GTK_IS_TEXT_VIEW (text_view), GTK_INPUT_HINT_NONE);
+
+ g_object_get (G_OBJECT (text_view->priv->im_context),
+ "input-hints", &hints,
+ NULL);
+
+ return hints;
+}
diff --git a/gtk/gtktextview.h b/gtk/gtktextview.h
index 21667bbe1f..03a17edd1d 100644
--- a/gtk/gtktextview.h
+++ b/gtk/gtktextview.h
@@ -280,6 +280,19 @@ PangoTabArray* gtk_text_view_get_tabs (GtkTextView *text_vi
/* note that the return value of this changes with the theme */
GtkTextAttributes* gtk_text_view_get_default_attributes (GtkTextView *text_view);
+GDK_AVAILABLE_IN_3_6
+void gtk_text_view_set_input_purpose (GtkTextView *text_view,
+ GtkInputPurpose purpose);
+GDK_AVAILABLE_IN_3_6
+GtkInputPurpose gtk_text_view_get_input_purpose (GtkTextView *text_view);
+
+GDK_AVAILABLE_IN_3_6
+void gtk_text_view_set_input_hints (GtkTextView *text_view,
+ GtkInputHints hints);
+GDK_AVAILABLE_IN_3_6
+GtkInputHints gtk_text_view_get_input_hints (GtkTextView *text_view);
+
+
G_END_DECLS
#endif /* __GTK_TEXT_VIEW_H__ */