[gtk/wip/ebassi/a11y-2: 433/442] a11y: Simplify GtkColorSwatchAccessible
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/ebassi/a11y-2: 433/442] a11y: Simplify GtkColorSwatchAccessible
- Date: Fri, 5 Jun 2020 19:37:42 +0000 (UTC)
commit c3eafed4728612668558b0470ddd6cd1fa534733
Author: Emmanuele Bassi <ebassi gnome org>
Date: Thu May 28 15:09:02 2020 +0100
a11y: Simplify GtkColorSwatchAccessible
Drop the GtkWidgetAccessible.notify_gtk override.
gtk/a11y/gtkcolorswatchaccessible.c | 65 +++++++++++++++++++------------------
1 file changed, 34 insertions(+), 31 deletions(-)
---
diff --git a/gtk/a11y/gtkcolorswatchaccessible.c b/gtk/a11y/gtkcolorswatchaccessible.c
index 5e60d2040e..1c52fda18c 100644
--- a/gtk/a11y/gtkcolorswatchaccessible.c
+++ b/gtk/a11y/gtkcolorswatchaccessible.c
@@ -17,10 +17,10 @@
#include "config.h"
-#include <glib/gi18n-lib.h>
-#include <gtk/gtk.h>
-#include "gtkcolorswatchprivate.h"
#include "gtkcolorswatchaccessibleprivate.h"
+#include "gtkcolorswatchprivate.h"
+
+#include <glib/gi18n-lib.h>
static void atk_action_interface_init (AtkActionIface *iface);
@@ -29,9 +29,9 @@ G_DEFINE_TYPE_WITH_CODE (GtkColorSwatchAccessible, _gtk_color_swatch_accessible,
static void
state_changed_cb (GtkWidget *widget,
- GtkStateFlags previous_flags)
+ GtkStateFlags previous_flags,
+ AtkObject *accessible)
{
- AtkObject *accessible;
GtkStateFlags flags;
gboolean was_selected;
gboolean selected;
@@ -41,23 +41,46 @@ state_changed_cb (GtkWidget *widget,
was_selected = (previous_flags & GTK_STATE_FLAG_SELECTED) != 0;
selected = (flags & GTK_STATE_FLAG_SELECTED) != 0;
- accessible = gtk_widget_get_accessible (widget);
if (selected && !was_selected)
atk_object_notify_state_change (accessible, ATK_STATE_CHECKED, TRUE);
else if (!selected && was_selected)
atk_object_notify_state_change (accessible, ATK_STATE_CHECKED, FALSE);
}
+static void
+on_selectable_changed_cb (GObject *gobject,
+ GParamSpec *pspec,
+ AtkObject *accessible)
+{
+ GtkColorSwatch *swatch = GTK_COLOR_SWATCH (gobject);
+ AtkRole role;
+
+ if (gtk_color_swatch_get_selectable (swatch))
+ role = ATK_ROLE_RADIO_BUTTON;
+ else
+ role = ATK_ROLE_PUSH_BUTTON;
+
+ atk_object_set_role (accessible, role);
+}
+
static void
gtk_color_swatch_accessible_initialize (AtkObject *obj,
gpointer data)
{
+ GtkColorSwatch *swatch = data;
+
ATK_OBJECT_CLASS (_gtk_color_swatch_accessible_parent_class)->initialize (obj, data);
g_signal_connect (data, "state-flags-changed",
- G_CALLBACK (state_changed_cb), NULL);
-
- atk_object_set_role (obj, ATK_ROLE_RADIO_BUTTON);
+ G_CALLBACK (state_changed_cb),
+ obj);
+ g_signal_connect (data, "notify::selectable",
+ G_CALLBACK (on_selectable_changed_cb),
+ obj);
+
+ obj->role = gtk_color_swatch_get_selectable (swatch)
+ ? ATK_ROLE_RADIO_BUTTON
+ : ATK_ROLE_PUSH_BUTTON;
}
static AtkStateSet *
@@ -78,39 +101,19 @@ gtk_color_swatch_accessible_ref_state_set (AtkObject *accessible)
return state_set;
}
-static void
-gtk_color_swatch_accessible_notify_gtk (GObject *obj,
- GParamSpec *pspec)
-{
- GtkWidget *widget = GTK_WIDGET (obj);
- AtkObject *atk_obj = gtk_widget_get_accessible (widget);
-
- if (strcmp (pspec->name, "selectable") == 0)
- {
- if (gtk_color_swatch_get_selectable (GTK_COLOR_SWATCH (widget)))
- atk_object_set_role (atk_obj, ATK_ROLE_RADIO_BUTTON);
- else
- atk_object_set_role (atk_obj, ATK_ROLE_PUSH_BUTTON);
- }
- else
- GTK_WIDGET_ACCESSIBLE_CLASS (_gtk_color_swatch_accessible_parent_class)->notify_gtk (obj, pspec);
-}
-
static void
_gtk_color_swatch_accessible_class_init (GtkColorSwatchAccessibleClass *klass)
{
AtkObjectClass *atk_class = ATK_OBJECT_CLASS (klass);
- GtkWidgetAccessibleClass *widget_class = (GtkWidgetAccessibleClass *)klass;
atk_class->initialize = gtk_color_swatch_accessible_initialize;
atk_class->ref_state_set = gtk_color_swatch_accessible_ref_state_set;
-
- widget_class->notify_gtk = gtk_color_swatch_accessible_notify_gtk;
}
static void
-_gtk_color_swatch_accessible_init (GtkColorSwatchAccessible *scale)
+_gtk_color_swatch_accessible_init (GtkColorSwatchAccessible *self)
{
+ ATK_OBJECT (self)->role = ATK_ROLE_RADIO_BUTTON;
}
static gint
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]