Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dorota Czaplejewicz
gtk
Commits
7371e3f7
Commit
7371e3f7
authored
Jun 29, 2011
by
Matthias Clasen
Browse files
Convert GailComboBox to GtkComboBoxAccessible
parent
2f744db9
Changes
6
Hide whitespace changes
Inline
Side-by-side
gtk/a11y/Makefile.am
View file @
7371e3f7
...
...
@@ -11,7 +11,7 @@ gail_c_sources = \
gailcellparent.c
\
gailcheckmenuitem.c
\
gailchecksubmenuitem.c
\
g
ail
combobox.c
\
g
tk
combobox
accessible
.c
\
gailcontainer.c
\
gailcontainercell.c
\
gtkentryaccessible.c
\
...
...
@@ -61,7 +61,7 @@ gail_private_h_sources = \
gailcellparent.h
\
gailcheckmenuitem.h
\
gailchecksubmenuitem.h
\
g
ail
combobox.h
\
g
tk
combobox
accessible
.h
\
gailcontainercell.h
\
gailcontainer.h
\
gtkentryaccessible.h
\
...
...
gtk/a11y/gail.c
View file @
7371e3f7
...
...
@@ -27,7 +27,6 @@
#include
"gailbutton.h"
#include
"gailcell.h"
#include
"gailcheckmenuitem.h"
#include
"gailcombobox.h"
#include
"gailcontainer.h"
#include
"gailcontainercell.h"
#include
"gailexpander.h"
...
...
@@ -96,7 +95,6 @@ GAIL_IMPLEMENT_FACTORY (GAIL_TYPE_WIDGET, GailWidget, gail_widget, GTK_TYPE_WIDG
GAIL_IMPLEMENT_FACTORY
(
GAIL_TYPE_CONTAINER
,
GailContainer
,
gail_container
,
GTK_TYPE_CONTAINER
)
GAIL_IMPLEMENT_FACTORY
(
GAIL_TYPE_BUTTON
,
GailButton
,
gail_button
,
GTK_TYPE_BUTTON
)
GAIL_IMPLEMENT_FACTORY_WITH_FUNC
(
GAIL_TYPE_MENU_ITEM
,
GailMenuItem
,
gail_menu_item
,
gail_menu_item_new
)
GAIL_IMPLEMENT_FACTORY
(
GAIL_TYPE_COMBO_BOX
,
GailComboBox
,
gail_combo_box
,
GTK_TYPE_COMBO_BOX
)
GAIL_IMPLEMENT_FACTORY
(
GAIL_TYPE_MENU_SHELL
,
GailMenuShell
,
gail_menu_shell
,
GTK_TYPE_MENU_SHELL
)
GAIL_IMPLEMENT_FACTORY
(
GAIL_TYPE_MENU
,
GailMenu
,
gail_menu
,
GTK_TYPE_MENU
)
GAIL_IMPLEMENT_FACTORY
(
GAIL_TYPE_WINDOW
,
GailWindow
,
gail_window
,
GTK_TYPE_BIN
)
...
...
@@ -854,7 +852,6 @@ gail_accessibility_module_init (void)
GAIL_WIDGET_SET_FACTORY
(
GTK_TYPE_CONTAINER
,
gail_container
);
GAIL_WIDGET_SET_FACTORY
(
GTK_TYPE_BUTTON
,
gail_button
);
GAIL_WIDGET_SET_FACTORY
(
GTK_TYPE_MENU_ITEM
,
gail_menu_item
);
GAIL_WIDGET_SET_FACTORY
(
GTK_TYPE_COMBO_BOX
,
gail_combo_box
);
GAIL_WIDGET_SET_FACTORY
(
GTK_TYPE_MENU_BAR
,
gail_menu_shell
);
GAIL_WIDGET_SET_FACTORY
(
GTK_TYPE_MENU
,
gail_menu
);
GAIL_WIDGET_SET_FACTORY
(
GTK_TYPE_WINDOW
,
gail_window
);
...
...
gtk/a11y/g
ail
combobox.c
→
gtk/a11y/g
tk
combobox
accessible
.c
View file @
7371e3f7
...
...
@@ -21,93 +21,58 @@
#include
<gtk/gtk.h>
#include
<gdk/gdkkeysyms.h>
#include
"gailcombobox.h"
static
void
gail_combo_box_class_init
(
GailComboBoxClass
*
klass
);
static
void
gail_combo_box_init
(
GailComboBox
*
combo_box
);
static
void
gail_combo_box_real_initialize
(
AtkObject
*
obj
,
gpointer
data
);
static
void
gail_combo_box_changed_gtk
(
GtkWidget
*
widget
);
static
const
gchar
*
gail_combo_box_get_name
(
AtkObject
*
obj
);
static
gint
gail_combo_box_get_n_children
(
AtkObject
*
obj
);
static
AtkObject
*
gail_combo_box_ref_child
(
AtkObject
*
obj
,
gint
i
);
static
void
gail_combo_box_finalize
(
GObject
*
object
);
static
void
atk_action_interface_init
(
AtkActionIface
*
iface
);
static
gboolean
gail_combo_box_do_action
(
AtkAction
*
action
,
gint
i
);
static
gint
gail_combo_box_get_n_actions
(
AtkAction
*
action
);
static
const
gchar
*
gail_combo_box_get_keybinding
(
AtkAction
*
action
,
gint
i
);
static
const
gchar
*
gail_combo_box_action_get_name
(
AtkAction
*
action
,
gint
i
);
static
void
atk_selection_interface_init
(
AtkSelectionIface
*
iface
);
static
gboolean
gail_combo_box_add_selection
(
AtkSelection
*
selection
,
gint
i
);
static
gboolean
gail_combo_box_clear_selection
(
AtkSelection
*
selection
);
static
AtkObject
*
gail_combo_box_ref_selection
(
AtkSelection
*
selection
,
gint
i
);
static
gint
gail_combo_box_get_selection_count
(
AtkSelection
*
selection
);
static
gboolean
gail_combo_box_is_child_selected
(
AtkSelection
*
selection
,
gint
i
);
static
gboolean
gail_combo_box_remove_selection
(
AtkSelection
*
selection
,
gint
i
);
G_DEFINE_TYPE_WITH_CODE
(
GailComboBox
,
gail_combo_box
,
GAIL_TYPE_CONTAINER
,
#include
"gtkcomboboxaccessible.h"
static
void
atk_action_interface_init
(
AtkActionIface
*
iface
);
static
void
atk_selection_interface_init
(
AtkSelectionIface
*
iface
);
G_DEFINE_TYPE_WITH_CODE
(
GtkComboBoxAccessible
,
gtk_combo_box_accessible
,
GAIL_TYPE_CONTAINER
,
G_IMPLEMENT_INTERFACE
(
ATK_TYPE_ACTION
,
atk_action_interface_init
)
G_IMPLEMENT_INTERFACE
(
ATK_TYPE_SELECTION
,
atk_selection_interface_init
))
static
void
gail_combo_box_class_init
(
GailComboBoxClass
*
klass
)
changed_cb
(
GtkWidget
*
widget
)
{
G
ObjectClass
*
gobject_class
=
G_OBJECT_CLASS
(
klass
)
;
AtkObject
Class
*
class
=
ATK_OBJECT_CLASS
(
klass
)
;
g
object_class
->
finalize
=
gail_combo_box_finalize
;
G
tkComboBox
*
combo_box
;
AtkObject
*
obj
;
GtkComboBoxAccessible
*
accessible
;
g
int
index
;
class
->
get_name
=
gail_combo_box_get_name
;
class
->
get_n_children
=
gail_combo_box_get_n_children
;
class
->
ref_child
=
gail_combo_box_ref_child
;
class
->
initialize
=
gail_combo_box_real_initialize
;
}
combo_box
=
GTK_COMBO_BOX
(
widget
);
static
void
gail_combo_box_init
(
GailComboBox
*
combo_box
)
{
combo_box
->
press_keybinding
=
NULL
;
combo_box
->
old_selection
=
-
1
;
combo_box
->
name
=
NULL
;
combo_box
->
popup_set
=
FALSE
;
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
)
{
accessible
->
old_selection
=
index
;
g_object_notify
(
G_OBJECT
(
obj
),
"accessible-name"
);
g_signal_emit_by_name
(
obj
,
"selection_changed"
);
}
}
static
void
g
ail
_combo_box_
real
_initialize
(
AtkObject
*
obj
,
gpointer
data
)
g
tk
_combo_box_
accessible
_initialize
(
AtkObject
*
obj
,
gpointer
data
)
{
GtkComboBox
*
combo_box
;
G
ail
ComboBox
*
gail_combo_box
;
G
tk
ComboBox
Accessible
*
accessible
;
AtkObject
*
popup
;
ATK_OBJECT_CLASS
(
g
ail
_combo_box_parent_class
)
->
initialize
(
obj
,
data
);
ATK_OBJECT_CLASS
(
g
tk
_combo_box_
accessible_
parent_class
)
->
initialize
(
obj
,
data
);
combo_box
=
GTK_COMBO_BOX
(
data
);
accessible
=
GTK_COMBO_BOX_ACCESSIBLE
(
obj
);
gail_combo_box
=
GAIL_COMBO_BOX
(
obj
);
g_signal_connect
(
combo_box
,
"changed"
,
G_CALLBACK
(
gail_combo_box_changed_gtk
),
NULL
);
gail_combo_box
->
old_selection
=
gtk_combo_box_get_active
(
combo_box
);
g_signal_connect
(
combo_box
,
"changed"
,
G_CALLBACK
(
changed_cb
),
NULL
);
accessible
->
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
);
gail_combo_box
->
popup_set
=
TRUE
;
accessible
->
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
);
...
...
@@ -116,53 +81,37 @@ gail_combo_box_real_initialize (AtkObject *obj,
}
static
void
g
ail
_combo_box_
changed_gtk
(
GtkWidget
*
widge
t
)
g
tk
_combo_box_
accessible_finalize
(
GObject
*
objec
t
)
{
GtkComboBox
*
combo_box
;
AtkObject
*
obj
;
GailComboBox
*
gail_combo_box
;
gint
index
;
GtkComboBoxAccessible
*
combo_box
=
GTK_COMBO_BOX_ACCESSIBLE
(
object
);
combo_box
=
GTK_COMBO_BOX
(
widget
);
g_free
(
combo_box
->
name
);
index
=
gtk_combo_box_get_active
(
combo_box
);
obj
=
gtk_widget_get_accessible
(
widget
);
gail_combo_box
=
GAIL_COMBO_BOX
(
obj
);
if
(
gail_combo_box
->
old_selection
!=
index
)
{
gail_combo_box
->
old_selection
=
index
;
g_object_notify
(
G_OBJECT
(
obj
),
"accessible-name"
);
g_signal_emit_by_name
(
obj
,
"selection_changed"
);
}
G_OBJECT_CLASS
(
gtk_combo_box_accessible_parent_class
)
->
finalize
(
object
);
}
static
const
gchar
*
g
ail
_combo_box_get_name
(
AtkObject
*
obj
)
g
tk
_combo_box_
accessible_
get_name
(
AtkObject
*
obj
)
{
GtkWidget
*
widget
;
GtkComboBox
*
combo_box
;
G
ail
ComboBox
*
gail_combo_box
;
G
tk
ComboBox
Accessible
*
accessible
;
GtkTreeIter
iter
;
const
gchar
*
name
;
GtkTreeModel
*
model
;
gint
n_columns
;
gint
i
;
g_return_val_if_fail
(
GAIL_IS_COMBO_BOX
(
obj
),
NULL
);
name
=
ATK_OBJECT_CLASS
(
gail_combo_box_parent_class
)
->
get_name
(
obj
);
name
=
ATK_OBJECT_CLASS
(
gtk_combo_box_accessible_parent_class
)
->
get_name
(
obj
);
if
(
name
)
return
name
;
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
obj
));
if
(
widget
==
NULL
)
/*
* State is defunct
*/
return
NULL
;
combo_box
=
GTK_COMBO_BOX
(
widget
);
gail_combo_box
=
G
AIL
_COMBO_BOX
(
obj
);
accessible
=
G
TK
_COMBO_BOX
_ACCESSIBLE
(
obj
);
if
(
gtk_combo_box_get_active_iter
(
combo_box
,
&
iter
))
{
model
=
gtk_combo_box_get_model
(
combo_box
);
...
...
@@ -174,68 +123,51 @@ gail_combo_box_get_name (AtkObject *obj)
gtk_tree_model_get_value
(
model
,
&
iter
,
i
,
&
value
);
if
(
G_VALUE_HOLDS_STRING
(
&
value
))
{
if
(
gail_combo_box
->
name
)
g_free
(
gail_combo_box
->
name
);
gail_combo_box
->
name
=
g_strdup
((
gchar
*
)
g_value_get_string
(
&
value
));
g_value_unset
(
&
value
);
g_free
(
accessible
->
name
);
accessible
->
name
=
g_strdup
(
g_value_get_string
(
&
value
));
g_value_unset
(
&
value
);
break
;
}
else
g_value_unset
(
&
value
);
else
g_value_unset
(
&
value
);
}
}
return
gail_combo_box
->
name
;
return
accessible
->
name
;
}
/*
* The children of a GailComboBox are the list of items and the entry field
* if it is editable.
*/
static
gint
g
ail
_combo_box_get_n_children
(
AtkObject
*
obj
)
g
tk
_combo_box_
accessible_
get_n_children
(
AtkObject
*
obj
)
{
gint
n_children
=
0
;
GtkWidget
*
widget
;
g_return_val_if_fail
(
GAIL_IS_COMBO_BOX
(
obj
),
0
);
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
obj
));
if
(
widget
==
NULL
)
/*
* State is defunct
*/
return
0
;
n_children
++
;
if
(
gtk_combo_box_get_has_entry
(
GTK_COMBO_BOX
(
widget
)))
n_children
++
;
n_children
++
;
return
n_children
;
}
static
AtkObject
*
g
ail
_combo_box_ref_child
(
AtkObject
*
obj
,
gint
i
)
static
AtkObject
*
g
tk
_combo_box_
accessible_
ref_child
(
AtkObject
*
obj
,
gint
i
)
{
GtkWidget
*
widget
;
AtkObject
*
child
;
GailComboBox
*
box
;
g_return_val_if_fail
(
GAIL_IS_COMBO_BOX
(
obj
),
NULL
);
GtkComboBoxAccessible
*
box
;
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
obj
));
if
(
widget
==
NULL
)
/*
* State is defunct
*/
return
NULL
;
if
(
i
==
0
)
{
child
=
gtk_combo_box_get_popup_accessible
(
GTK_COMBO_BOX
(
widget
));
box
=
G
AIL
_COMBO_BOX
(
obj
);
box
=
G
TK
_COMBO_BOX
_ACCESSIBLE
(
obj
);
if
(
box
->
popup_set
==
FALSE
)
{
atk_object_set_parent
(
child
,
obj
);
...
...
@@ -250,32 +182,42 @@ gail_combo_box_ref_child (AtkObject *obj,
{
return
NULL
;
}
return
g_object_ref
(
child
);
}
static
void
a
tk_
action_interface
_init
(
A
tk
ActionIface
*
iface
)
g
tk_
combo_box_accessible_class
_init
(
G
tk
ComboBoxAccessibleClass
*
klass
)
{
iface
->
do_action
=
gail_combo_box_do_action
;
iface
->
get_n_actions
=
gail_combo_box_get_n_actions
;
iface
->
get_keybinding
=
gail_combo_box_get_keybinding
;
iface
->
get_name
=
gail_combo_box_action_get_name
;
GObjectClass
*
gobject_class
=
G_OBJECT_CLASS
(
klass
);
AtkObjectClass
*
class
=
ATK_OBJECT_CLASS
(
klass
);
gobject_class
->
finalize
=
gtk_combo_box_accessible_finalize
;
class
->
get_name
=
gtk_combo_box_accessible_get_name
;
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
;
}
static
void
gtk_combo_box_accessible_init
(
GtkComboBoxAccessible
*
combo_box
)
{
combo_box
->
old_selection
=
-
1
;
combo_box
->
name
=
NULL
;
combo_box
->
popup_set
=
FALSE
;
}
static
gboolean
g
ail
_combo_box_do_action
(
AtkAction
*
action
,
gint
i
)
g
tk
_combo_box_
accessible_
do_action
(
AtkAction
*
action
,
gint
i
)
{
GtkComboBox
*
combo_box
;
GtkWidget
*
widget
;
gboolean
popup_shown
;
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
action
));
if
(
widget
==
NULL
)
/*
* State is defunct
*/
return
FALSE
;
if
(
!
gtk_widget_get_sensitive
(
widget
)
||
!
gtk_widget_get_visible
(
widget
))
...
...
@@ -286,9 +228,9 @@ gail_combo_box_do_action (AtkAction *action,
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
);
gtk_combo_box_popdown
(
combo_box
);
else
gtk_combo_box_popup
(
combo_box
);
gtk_combo_box_popup
(
combo_box
);
return
TRUE
;
}
else
...
...
@@ -296,134 +238,107 @@ gail_combo_box_do_action (AtkAction *action,
}
static
gint
g
ail
_combo_box_get_n_actions
(
AtkAction
*
action
)
g
tk
_combo_box_
accessible_
get_n_actions
(
AtkAction
*
action
)
{
/*
* The default behavior of a combo_box box is to have one action -
*/
return
1
;
}
static
const
gchar
*
g
ail
_combo_box_get_keybinding
(
AtkAction
*
action
,
gint
i
)
static
const
gchar
*
g
tk
_combo_box_
accessible_
get_keybinding
(
AtkAction
*
action
,
gint
i
)
{
GailComboBox
*
combo_box
;
GtkComboBoxAccessible
*
combo_box
;
GtkWidget
*
widget
;
GtkWidget
*
label
;
AtkRelationSet
*
set
;
AtkRelation
*
relation
;
GPtrArray
*
target
;
gpointer
target_object
;
guint
key_val
;
gchar
*
return_value
=
NULL
;
switch
(
i
)
{
case
0
:
{
GtkWidget
*
widget
;
GtkWidget
*
label
;
AtkRelationSet
*
set
;
AtkRelation
*
relation
;
GPtrArray
*
target
;
gpointer
target_object
;
guint
key_val
;
combo_box
=
GAIL_COMBO_BOX
(
action
);
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
combo_box
));
if
(
widget
==
NULL
)
return
NULL
;
set
=
atk_object_ref_relation_set
(
ATK_OBJECT
(
action
));
if
(
!
set
)
return
NULL
;
label
=
NULL
;
relation
=
atk_relation_set_get_relation_by_type
(
set
,
ATK_RELATION_LABELLED_BY
);
if
(
relation
)
{
target
=
atk_relation_get_target
(
relation
);
target_object
=
g_ptr_array_index
(
target
,
0
);
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
target_object
));
}
g_object_unref
(
set
);
if
(
GTK_IS_LABEL
(
label
))
{
key_val
=
gtk_label_get_mnemonic_keyval
(
GTK_LABEL
(
label
));
if
(
key_val
!=
GDK_KEY_VoidSymbol
)
return_value
=
gtk_accelerator_name
(
key_val
,
GDK_MOD1_MASK
);
}
g_free
(
combo_box
->
press_keybinding
);
combo_box
->
press_keybinding
=
return_value
;
break
;
}
default:
break
;
}
if
(
i
!=
0
)
return
NULL
;
combo_box
=
GTK_COMBO_BOX_ACCESSIBLE
(
action
);
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
combo_box
));
if
(
widget
==
NULL
)
return
NULL
;
set
=
atk_object_ref_relation_set
(
ATK_OBJECT
(
action
));
if
(
set
==
NULL
)
return
NULL
;
label
=
NULL
;
relation
=
atk_relation_set_get_relation_by_type
(
set
,
ATK_RELATION_LABELLED_BY
);
if
(
relation
)
{
target
=
atk_relation_get_target
(
relation
);
target_object
=
g_ptr_array_index
(
target
,
0
);
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
target_object
));
}
g_object_unref
(
set
);
if
(
GTK_IS_LABEL
(
label
))
{
key_val
=
gtk_label_get_mnemonic_keyval
(
GTK_LABEL
(
label
));
if
(
key_val
!=
GDK_KEY_VoidSymbol
)
return_value
=
gtk_accelerator_name
(
key_val
,
GDK_MOD1_MASK
);
}
return
return_value
;
}
static
const
gchar
*
gail_combo_box_action_get_name
(
AtkAction
*
action
,
gint
i
)
static
const
gchar
*
gtk_combo_box_accessible_action_get_name
(
AtkAction
*
action
,
gint
i
)
{
if
(
i
==
0
)
return
"press"
;
else
if
(
i
!=
0
)
return
NULL
;
return
"press"
;
}
static
void
atk_
sele
ction_interface_init
(
Atk
Sele
ctionIface
*
iface
)
atk_
a
ction_interface_init
(
Atk
A
ctionIface
*
iface
)
{
iface
->
add_selection
=
gail_combo_box_add_selection
;
iface
->
clear_selection
=
gail_combo_box_clear_selection
;
iface
->
ref_selection
=
gail_combo_box_ref_selection
;
iface
->
get_selection_count
=
gail_combo_box_get_selection_count
;
iface
->
is_child_selected
=
gail_combo_box_is_child_selected
;
iface
->
remove_selection
=
gail_combo_box_remove_selection
;
/*
* select_all_selection does not make sense for a combo_box
* so no implementation is provided.
*/
iface
->
do_action
=
gtk_combo_box_accessible_do_action
;
iface
->
get_n_actions
=
gtk_combo_box_accessible_get_n_actions
;
iface
->
get_keybinding
=
gtk_combo_box_accessible_get_keybinding
;
iface
->
get_name
=
gtk_combo_box_accessible_action_get_name
;
}
static
gboolean
g
ail
_combo_box_add_selection
(
AtkSelection
*
selection
,
gint
i
)
g
tk
_combo_box_
accessible_
add_selection
(
AtkSelection
*
selection
,
gint
i
)
{
GtkComboBox
*
combo_box
;
GtkWidget
*
widget
;
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
selection
));
if
(
widget
==
NULL
)
/*
* State is defunct
*/
return
FALSE
;
combo_box
=
GTK_COMBO_BOX
(
widget
);
gtk_
combo_box
_set_active
(
GTK_COMBO_BOX
(
widget
)
,
i
)
;
gtk_combo_box_set_active
(
combo_box
,
i
);
return
TRUE
;
}
static
gboolean
g
ail
_combo_box_clear_selection
(
AtkSelection
*
selection
)
static
gboolean
g
tk
_combo_box_
accessible_
clear_selection
(
AtkSelection
*
selection
)
{
GtkComboBox
*
combo_box
;
GtkWidget
*
widget
;
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
selection
));
if
(
widget
==
NULL
)
/*
* State is defunct
*/
return
FALSE
;
combo_box
=
GTK_COMBO_BOX
(
widget
);
gtk_
combo_box
_set_active
(
GTK_COMBO_BOX
(
widget
)
,
-
1
)
;
gtk_combo_box_set_active
(
combo_box
,
-
1
);
return
TRUE
;
}
static
AtkObject
*
g
ail
_combo_box_ref_selection
(
AtkSelection
*
selection
,
gint
i
)
static
AtkObject
*
g
tk
_combo_box_
accessible_
ref_selection
(
AtkSelection
*
selection
,
gint
i
)
{
GtkComboBox
*
combo_box
;
GtkWidget
*
widget
;
...
...
@@ -431,71 +346,52 @@ gail_combo_box_ref_selection (AtkSelection *selection,
gint
index
;
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
selection
));
if
(
widget
==
NULL
)
/*
* State is defunct
*/
return
NULL
;
combo_box
=
GTK_COMBO_BOX
(
widget
);
/*
* A combo_box box can have only one selection.
*/
if
(
i
!=
0
)
return
NULL
;
combo_box
=
GTK_COMBO_BOX
(
widget
);
obj
=
gtk_combo_box_get_popup_accessible
(
combo_box
);
index
=
gtk_combo_box_get_active
(
combo_box
);
return
atk_object_ref_accessible_child
(
obj
,
index
);
}
static
gint
g
ail
_combo_box_get_selection_count
(
AtkSelection
*
selection
)
g
tk
_combo_box_
accessible_
get_selection_count
(
AtkSelection
*
selection
)
{
GtkComboBox
*
combo_box
;
GtkWidget
*
widget
;
widget
=
gtk_accessible_get_widget
(
GTK_ACCESSIBLE
(
selection
));
if
(
widget
==
NULL
)
/*
* State is defunct
*/
return
0
;
combo_box
=
GTK_COMBO_BOX
(
widget
);
return
(
gtk_combo_box_get_active
(
combo_box
)
==
-
1
)
?
0
:
1
;
return
(
gtk_combo_box_get_active
(
GTK_COMBO_BOX
(
widget
))
==
-
1
)
?
0
:
1
;
}
static
gboolean
g
ail
_combo_box_is_child_selected
(
AtkSelection
*
selection
,