{ NULL, NULL, NULL, NULL, 0 }
};
+static Eina_Bool
+_is_operation_permitted(Eo *obj)
+{
+ Elm_Atspi_State_Set states;
+ eo_do(obj, states = elm_interface_atspi_accessible_state_set_get());
+
+ if (!STATE_TYPE_GET(states, ELM_ATSPI_STATE_SHOWING)) return EINA_FALSE;
+
+ Eo *parent = obj;
+ while (parent)
+ {
+ if (evas_object_freeze_events_get(parent)) return EINA_FALSE;
+ parent = evas_object_smart_parent_get(parent);
+ }
+ return EINA_TRUE;
+}
+
static Eldbus_Message *
_selection_selected_child_get(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Message *msg)
{
Eo *obj = _bridge_object_from_path(bridge, obj_path);
int idx;
Eldbus_Message *ret;
- Eina_Bool result;
+ Eina_Bool result = EINA_FALSE;
ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, ELM_INTERFACE_ATSPI_SELECTION_INTERFACE, msg);
ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
- eo_do(obj, result = elm_interface_atspi_selection_child_select(idx));
+ if (_is_operation_permitted(obj))
+ eo_do(obj, result = elm_interface_atspi_selection_child_select(idx));
eldbus_message_arguments_append(ret, "b", result);
return ret;
Eo *obj = _bridge_object_from_path(bridge, obj_path);
int idx;
Eldbus_Message *ret;
- Eina_Bool result;
+ Eina_Bool result = EINA_FALSE;
ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, ELM_INTERFACE_ATSPI_SELECTION_INTERFACE, msg);
ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
- eo_do(obj, result = elm_interface_atspi_selection_selected_child_deselect(idx));
+ if (_is_operation_permitted(obj))
+ eo_do(obj, result = elm_interface_atspi_selection_selected_child_deselect(idx));
eldbus_message_arguments_append(ret, "b", result);
return ret;
Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
Eo *obj = _bridge_object_from_path(bridge, obj_path);
Eldbus_Message *ret;
- Eina_Bool result;
+ Eina_Bool result = EINA_FALSE;
ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, ELM_INTERFACE_ATSPI_SELECTION_INTERFACE, msg);
ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
- eo_do(obj, result = elm_interface_atspi_selection_all_children_select());
+ if (_is_operation_permitted(obj))
+ eo_do(obj, result = elm_interface_atspi_selection_all_children_select());
eldbus_message_arguments_append(ret, "b", result);
return ret;
Eo *bridge = eldbus_service_object_data_get(iface, ELM_ATSPI_BRIDGE_CLASS_NAME);
Eo *obj = _bridge_object_from_path(bridge, obj_path);
Eldbus_Message *ret;
- Eina_Bool result;
+ Eina_Bool result = EINA_FALSE;
ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, ELM_INTERFACE_ATSPI_SELECTION_INTERFACE, msg);
ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
- eo_do(obj, result = elm_interface_atspi_selection_clear());
+ if (_is_operation_permitted(obj))
+ eo_do(obj, result = elm_interface_atspi_selection_clear());
eldbus_message_arguments_append(ret, "b", result);
return ret;
Eo *obj = _bridge_object_from_path(bridge, obj_path);
int idx;
Eldbus_Message *ret;
- Eina_Bool result;
+ Eina_Bool result = EINA_FALSE;
ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, ELM_INTERFACE_ATSPI_SELECTION_INTERFACE, msg);
ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
- eo_do(obj, result = elm_interface_atspi_selection_child_deselect(idx));
+ if (_is_operation_permitted(obj))
+ eo_do(obj, result = elm_interface_atspi_selection_child_deselect(idx));
eldbus_message_arguments_append(ret, "b", result);
return ret;
Eo *obj = _bridge_object_from_path(bridge, obj_path);
int idx;
Eldbus_Message *ret;
- Eina_Bool result;
+ Eina_Bool result = EINA_FALSE;
ELM_ATSPI_OBJ_CHECK_OR_RETURN_DBUS_ERROR(obj, ELM_INTERFACE_ATSPI_ACTION_MIXIN, msg);
ret = eldbus_message_method_return_new(msg);
EINA_SAFETY_ON_NULL_RETURN_VAL(ret, NULL);
- eo_do(obj, result = elm_interface_atspi_action_do(idx));
+ if (_is_operation_permitted(obj))
+ eo_do(obj, result = elm_interface_atspi_action_do(idx));
+
eldbus_message_arguments_append(ret, "b", result);
return ret;