elm_widget_item: refactor logic from gengrid into seperated class

This commit is contained in:
Marcel Hollerbach 2017-11-10 15:26:33 +01:00
parent c075b7caaa
commit 53052abaa6
5 changed files with 50 additions and 1 deletions

View File

@ -148,6 +148,7 @@ elm_legacy_eolian_files = \
lib/elementary/elm_menu_item.eo \
lib/elementary/elm_ctxpopup_item.eo \
lib/elementary/elm_index_item.eo \
lib/elementary/elm_widget_item_static_focus.eo \
lib/elementary/elm_genlist_item.eo \
lib/elementary/elm_gengrid_item.eo \
lib/elementary/elm_list_item.eo \
@ -700,6 +701,7 @@ lib_elementary_libelementary_la_SOURCES = \
lib/elementary/efl_ui_focus_parent_provider.c \
lib/elementary/efl_ui_focus_parent_provider_standard.c \
lib/elementary/efl_ui_focus_parent_provider_gen.c \
lib/elementary/elm_widget_item_static_focus.c \
$(NULL)

View File

@ -25,7 +25,7 @@ enum Elm.Gengrid.Item.Field_Type
}
class Elm.Gengrid.Item(Elm.Widget.Item, Efl.Ui.Focus.Object)
class Elm.Gengrid.Item(Elm.Widget.Item.Static_Focus, Efl.Ui.Focus.Object)
{
[[Elementary gengrid item class]]
legacy_prefix: elm_gengrid_item;

View File

@ -55,6 +55,7 @@
#include "elm_code_private.h"
#include "efl_ui_focus_parent_provider.eo.h"
#include "efl_ui_focus_parent_provider_standard.eo.h"
#include "elm_widget_item_static_focus.eo.h"
#ifdef HAVE_LANGINFO_H
# include <langinfo.h>

View File

@ -0,0 +1,39 @@
#ifdef HAVE_CONFIG_H
# include "elementary_config.h"
#endif
#define ELM_WIDGET_ITEM_PROTECTED
#include <Elementary.h>
#include "elm_priv.h"
#include "efl_ui_focus_composition_adapter.eo.h"
typedef struct {
Eo *adapter;
} Elm_Widget_Item_Static_Focus_Data;
EOLIAN static void
_elm_widget_item_static_focus_efl_ui_focus_object_prepare_logical(Eo *obj, Elm_Widget_Item_Static_Focus_Data *pd EINA_UNUSED)
{
Elm_Widget_Item_Data *wpd = efl_data_scope_get(obj, ELM_WIDGET_ITEM_CLASS);
efl_ui_focus_object_prepare_logical(efl_super(obj, ELM_WIDGET_ITEM_STATIC_FOCUS_CLASS));
if (!efl_ui_focus_manager_request_subchild(wpd->widget, obj))
{
if (!pd->adapter)
{
pd->adapter = efl_add(EFL_UI_FOCUS_COMPOSITION_ADAPTER_CLASS, obj, efl_ui_focus_composition_adapter_canvas_object_set(efl_added, wpd->view));
efl_wref_add(pd->adapter, &pd->adapter);
efl_ui_focus_manager_calc_register(wpd->widget, pd->adapter, obj, NULL);
}
}
else if (pd->adapter)
{
efl_ui_focus_manager_calc_unregister(wpd->widget, pd->adapter);
efl_del(pd->adapter);
pd->adapter = NULL;
}
}
#include "elm_widget_item_static_focus.eo.c"

View File

@ -0,0 +1,7 @@
class Elm.Widget.Item.Static_Focus (Elm.Widget.Item, Efl.Ui.Focus.Object)
{
[[A class that ensures that at least ONE focusable target is behind this widget item. If there is none registered to it after a prepare call it will register the view of the item as item.]]
implements {
Efl.Ui.Focus.Object.prepare_logical;
}
}