* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
* file for a list of people on the GTK+ Team. See the ChangeLog
* files for a list of changes. These files are distributed with
- * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
/**
if (length < 0)
length = strlen (text);
-
+
GTK_EDITABLE_GET_IFACE (editable)->do_insert_text (editable, text, length, position);
}
return TRUE;
}
+
+/**
+ * gtk_editable_delegate_get_accessible_platform_state:
+ * @editable: a `GtkEditable` implementation
+ * @state: what kind of accessible state to retrieve
+ *
+ * Retrieves the accessible platform state from the editable delegate.
+ *
+ * This is an helper function to retrieve the accessible state for
+ * `GtkEditable` interface implementations using a delegate pattern.
+ *
+ * You should call this function in your editable widget implementation
+ * of the [vfunc@Gtk.Accessible.get_platform_state] virtual function, for
+ * instance:
+ *
+ * ```c
+ * static void
+ * accessible_interface_init (GtkAccessibleInterface *iface)
+ * {
+ * iface->get_platform_state = your_editable_get_accessible_platform_state;
+ * }
+ *
+ * static gboolean
+ * your_editable_get_accessible_platform_state (GtkAccessible *accessible,
+ * GtkAccessiblePlatformState state)
+ * {
+ * return gtk_editable_delegate_get_accessible_platform_state (GTK_EDITABLE (accessible), state);
+ * }
+ * ```
+ *
+ * Since: 4.10
+ */
+gboolean
+gtk_editable_delegate_get_accessible_platform_state (GtkEditable *editable,
+ GtkAccessiblePlatformState state)
+{
+ GtkWidget *delegate = GTK_WIDGET (gtk_editable_get_delegate (editable));
+
+ switch (state)
+ {
+ case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSABLE:
+ return gtk_widget_get_focusable (delegate);
+ case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED:
+ return gtk_widget_has_focus (delegate);
+ case GTK_ACCESSIBLE_PLATFORM_STATE_ACTIVE:
+ return FALSE;
+ default:
+ g_assert_not_reached ();
+ return FALSE;
+ }
+}
#error "Only <gtk/gtk.h> can be included directly."
#endif
+#include <gtk/gtkaccessible.h>
#include <gtk/gtkwidget.h>
-
G_BEGIN_DECLS
#define GTK_TYPE_EDITABLE (gtk_editable_get_type ())
guint prop_id,
GValue *value,
GParamSpec *pspec);
+GDK_AVAILABLE_IN_4_10
+gboolean gtk_editable_delegate_get_accessible_platform_state (GtkEditable *editable,
+ GtkAccessiblePlatformState state);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkEditable, g_object_unref)
gtk_entry_accessible_get_platform_state (GtkAccessible *self,
GtkAccessiblePlatformState state)
{
- GtkEntry *entry = GTK_ENTRY (self);
- GtkEntryPrivate *priv = gtk_entry_get_instance_private (entry);
-
- switch (state)
- {
- case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSABLE:
- return gtk_widget_get_focusable (GTK_WIDGET (priv->text));
- case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED:
- return gtk_widget_has_focus (GTK_WIDGET (priv->text));
- case GTK_ACCESSIBLE_PLATFORM_STATE_ACTIVE:
- return FALSE;
- default:
- g_assert_not_reached ();
- }
+ return gtk_editable_delegate_get_accessible_platform_state (GTK_EDITABLE (self), state);
}
static void
gtk_password_entry_accessible_get_platform_state (GtkAccessible *self,
GtkAccessiblePlatformState state)
{
- GtkPasswordEntry *entry = GTK_PASSWORD_ENTRY (self);
-
- switch (state)
- {
- case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSABLE:
- return gtk_widget_get_focusable (GTK_WIDGET (entry->entry));
- case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED:
- return gtk_widget_has_focus (GTK_WIDGET (entry->entry));
- case GTK_ACCESSIBLE_PLATFORM_STATE_ACTIVE:
- return FALSE;
- default:
- g_assert_not_reached ();
- }
+ return gtk_editable_delegate_get_accessible_platform_state (GTK_EDITABLE (self), state);
}
static void
gtk_search_entry_accessible_get_platform_state (GtkAccessible *self,
GtkAccessiblePlatformState state)
{
- GtkSearchEntry *entry = GTK_SEARCH_ENTRY (self);
-
- switch (state)
- {
- case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSABLE:
- return gtk_widget_get_focusable (GTK_WIDGET (entry->entry));
- case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED:
- return gtk_widget_has_focus (GTK_WIDGET (entry->entry));
- case GTK_ACCESSIBLE_PLATFORM_STATE_ACTIVE:
- return FALSE;
- default:
- g_assert_not_reached ();
- }
+ return gtk_editable_delegate_get_accessible_platform_state (GTK_EDITABLE (self), state);
}
static void
gtk_spin_button_accessible_get_platform_state (GtkAccessible *self,
GtkAccessiblePlatformState state)
{
- GtkSpinButton *spin_button = GTK_SPIN_BUTTON (self);
-
- switch (state)
- {
- case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSABLE:
- return gtk_widget_get_focusable (spin_button->entry);
- case GTK_ACCESSIBLE_PLATFORM_STATE_FOCUSED:
- return gtk_widget_has_focus (spin_button->entry);
- case GTK_ACCESSIBLE_PLATFORM_STATE_ACTIVE:
- return FALSE;
- default:
- g_assert_not_reached ();
- }
+ return gtk_editable_delegate_get_accessible_platform_state (GTK_EDITABLE (self), state);
}
static void
gtk_spin_button_accessible_init (GtkAccessibleInterface *iface)
{
GtkAccessibleInterface *parent_iface = g_type_interface_peek_parent (iface);
+
iface->get_at_context = parent_iface->get_at_context;
iface->get_platform_state = gtk_spin_button_accessible_get_platform_state;
}