-/* GAIL - The GNOME Accessibility Implementation Library
+/* GTK+ - accessibility implementations
* Copyright 2004 Sun Microsystems Inc.
*
* This library is free software; you can redistribute it and/or
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include <gtk/gtk.h>
#include "gtkcomboboxaccessible.h"
+struct _GtkComboBoxAccessiblePrivate
+{
+ gchar *name;
+ gint old_selection;
+ gboolean popup_set;
+};
static void atk_action_interface_init (AtkActionIface *iface);
static void atk_selection_interface_init (AtkSelectionIface *iface);
index = gtk_combo_box_get_active (combo_box);
obj = gtk_widget_get_accessible (widget);
accessible = GTK_COMBO_BOX_ACCESSIBLE (obj);
- if (accessible->old_selection != index)
+ if (accessible->priv->old_selection != index)
{
- accessible->old_selection = index;
+ accessible->priv->old_selection = index;
g_object_notify (G_OBJECT (obj), "accessible-name");
- g_signal_emit_by_name (obj, "selection_changed");
+ g_signal_emit_by_name (obj, "selection-changed");
}
}
accessible = GTK_COMBO_BOX_ACCESSIBLE (obj);
g_signal_connect (combo_box, "changed", G_CALLBACK (changed_cb), NULL);
- accessible->old_selection = gtk_combo_box_get_active (combo_box);
+ accessible->priv->old_selection = gtk_combo_box_get_active (combo_box);
popup = gtk_combo_box_get_popup_accessible (combo_box);
if (popup)
{
atk_object_set_parent (popup, obj);
- accessible->popup_set = TRUE;
+ accessible->priv->popup_set = TRUE;
}
if (gtk_combo_box_get_has_entry (combo_box))
atk_object_set_parent (gtk_widget_get_accessible (gtk_bin_get_child (GTK_BIN (combo_box))), obj);
{
GtkComboBoxAccessible *combo_box = GTK_COMBO_BOX_ACCESSIBLE (object);
- g_free (combo_box->name);
+ g_free (combo_box->priv->name);
G_OBJECT_CLASS (gtk_combo_box_accessible_parent_class)->finalize (object);
}
-static const gchar*
+static const gchar *
gtk_combo_box_accessible_get_name (AtkObject *obj)
{
GtkWidget *widget;
n_columns = gtk_tree_model_get_n_columns (model);
for (i = 0; i < n_columns; i++)
{
- GValue value = { 0, };
+ GValue value = G_VALUE_INIT;
gtk_tree_model_get_value (model, &iter, i, &value);
if (G_VALUE_HOLDS_STRING (&value))
{
- g_free (accessible->name);
- accessible->name = g_strdup (g_value_get_string (&value));
+ g_free (accessible->priv->name);
+ accessible->priv->name = g_strdup (g_value_get_string (&value));
g_value_unset (&value);
break;
}
g_value_unset (&value);
}
}
- return accessible->name;
+ return accessible->priv->name;
}
static gint
{
child = gtk_combo_box_get_popup_accessible (GTK_COMBO_BOX (widget));
box = GTK_COMBO_BOX_ACCESSIBLE (obj);
- if (box->popup_set == FALSE)
+ if (!box->priv->popup_set)
{
atk_object_set_parent (child, obj);
- box->popup_set = TRUE;
+ box->priv->popup_set = TRUE;
}
}
else if (i == 1 && gtk_combo_box_get_has_entry (GTK_COMBO_BOX (widget)))
class->get_n_children = gtk_combo_box_accessible_get_n_children;
class->ref_child = gtk_combo_box_accessible_ref_child;
class->initialize = gtk_combo_box_accessible_initialize;
+
+ g_type_class_add_private (klass, sizeof (GtkComboBoxAccessiblePrivate));
}
static void
gtk_combo_box_accessible_init (GtkComboBoxAccessible *combo_box)
{
- combo_box->old_selection = -1;
- combo_box->name = NULL;
- combo_box->popup_set = FALSE;
+ combo_box->priv = G_TYPE_INSTANCE_GET_PRIVATE (combo_box,
+ GTK_TYPE_COMBO_BOX_ACCESSIBLE,
+ GtkComboBoxAccessiblePrivate);
+ combo_box->priv->old_selection = -1;
+ combo_box->priv->name = NULL;
+ combo_box->priv->popup_set = FALSE;
}
static gboolean
if (!gtk_widget_get_sensitive (widget) || !gtk_widget_get_visible (widget))
return FALSE;
- if (i == 0)
- {
- combo_box = GTK_COMBO_BOX (widget);
- g_object_get (combo_box, "popup-shown", &popup_shown, NULL);
- if (popup_shown)
- gtk_combo_box_popdown (combo_box);
- else
- gtk_combo_box_popup (combo_box);
- return TRUE;
- }
- else
+ if (i != 0)
return FALSE;
+
+ combo_box = GTK_COMBO_BOX (widget);
+ g_object_get (combo_box, "popup-shown", &popup_shown, NULL);
+ if (popup_shown)
+ gtk_combo_box_popdown (combo_box);
+ else
+ gtk_combo_box_popup (combo_box);
+
+ return TRUE;
}
static gint
{
target = atk_relation_get_target (relation);
target_object = g_ptr_array_index (target, 0);
- widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (target_object));
+ label = gtk_accessible_get_widget (GTK_ACCESSIBLE (target_object));
}
g_object_unref (set);
if (GTK_IS_LABEL (label))