stanluk pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=16fc2b347835b165ab033e3a502e0a08d33f41ba

commit 16fc2b347835b165ab033e3a502e0a08d33f41ba
Author: Lukasz Stanislawski <l.stanisl...@samsung.com>
Date:   Wed May 13 09:57:16 2015 +0200

    atspi: handle state change notifications in on_focus function
---
 src/lib/elm_entry.c  |  4 ++++
 src/lib/elm_layout.c |  4 ++++
 src/lib/elm_widget.c | 13 ++++---------
 3 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/lib/elm_entry.c b/src/lib/elm_entry.c
index 9e2e743..16b0fbd 100644
--- a/src/lib/elm_entry.c
+++ b/src/lib/elm_entry.c
@@ -1099,6 +1099,8 @@ _elm_entry_elm_widget_on_focus(Eo *obj, Elm_Entry_Data 
*sd)
             !edje_object_part_text_imf_context_get(sd->entry_edje, "elm.text"))
           elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_ON);
         evas_object_smart_callback_call(obj, SIG_FOCUSED, NULL);
+        if (_elm_config->atspi_mode)
+          elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
         _return_key_enabled_check(obj);
         _validate(obj);
      }
@@ -1110,6 +1112,8 @@ _elm_entry_elm_widget_on_focus(Eo *obj, Elm_Entry_Data 
*sd)
             !edje_object_part_text_imf_context_get(sd->entry_edje, "elm.text"))
           elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF);
         evas_object_smart_callback_call(obj, SIG_UNFOCUSED, NULL);
+        if (_elm_config->atspi_mode)
+          elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
 
         if (_elm_config->selection_clear_enable)
           {
diff --git a/src/lib/elm_layout.c b/src/lib/elm_layout.c
index f04b80f..06adc9d 100644
--- a/src/lib/elm_layout.c
+++ b/src/lib/elm_layout.c
@@ -406,12 +406,16 @@ _elm_layout_elm_widget_on_focus(Eo *obj, 
Elm_Layout_Smart_Data *_pd EINA_UNUSED)
         elm_layout_signal_emit(obj, "elm,action,focus", "elm");
         evas_object_focus_set(wd->resize_obj, EINA_TRUE);
         evas_object_smart_callback_call(obj, SIG_LAYOUT_FOCUSED, NULL);
+        if (_elm_config->atspi_mode)
+          elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
      }
    else
      {
         elm_layout_signal_emit(obj, "elm,action,unfocus", "elm");
         evas_object_focus_set(wd->resize_obj, EINA_FALSE);
         evas_object_smart_callback_call(obj, SIG_LAYOUT_UNFOCUSED, NULL);
+        if (_elm_config->atspi_mode)
+          elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
      }
 
    return EINA_TRUE;
diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index 1763bc5..8f48d6b 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -5430,13 +5430,6 @@ elm_widget_tree_dot_dump(const Evas_Object *top,
 #endif
 }
 
-static void
-_on_focus_change(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
-   Eina_Bool val = data ? EINA_TRUE : EINA_FALSE;
-   elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, val);
-}
-
 EOLIAN static void
 _elm_widget_eo_base_constructor(Eo *obj, Elm_Widget_Smart_Data *sd)
 {
@@ -5452,8 +5445,6 @@ _elm_widget_eo_base_constructor(Eo *obj, 
Elm_Widget_Smart_Data *sd)
    sd->on_create = EINA_FALSE;
 
    sd->role = ELM_ATSPI_ROLE_UNKNOWN;
-   evas_object_smart_callback_add(obj, "focused", _on_focus_change, (void*)1);
-   evas_object_smart_callback_add(obj, "unfocused", _on_focus_change, NULL);
 }
 
 EOLIAN static void
@@ -5479,12 +5470,16 @@ _elm_widget_on_focus(Eo *obj, Elm_Widget_Smart_Data *sd)
              if (!sd->resize_obj)
                evas_object_focus_set(obj, EINA_TRUE);
              evas_object_smart_callback_call(obj, SIG_WIDGET_FOCUSED, NULL);
+             if (_elm_config->atspi_mode)
+               elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_TRUE);
           }
         else
           {
              if (!sd->resize_obj)
                evas_object_focus_set(obj, EINA_FALSE);
              evas_object_smart_callback_call(obj, SIG_WIDGET_UNFOCUSED, NULL);
+             if (_elm_config->atspi_mode)
+               elm_interface_atspi_accessible_state_changed_signal_emit(obj, 
ELM_ATSPI_STATE_FOCUSED, EINA_FALSE);
           }
      }
    else

-- 


Reply via email to