#define MATCH_LAG 0.1
#define INITIAL_MATCH_LAG 0.2
+/* #undef DBG
+ * #define DBG(...) ERR(__VA_ARGS__) */
+
typedef struct _Evry_Window Evry_Window;
typedef struct _Evry_List_Window Evry_List_Window;
E_FREE(it);
}
+static Evry_Selector *
+_selector_for_plugin_get(Evry_Plugin *p)
+{
+ Evry_State *s;
+ int i;
+
+ for (i = 0; i < 3; i++)
+ {
+ s = selectors[i]->state;
+ if (s && eina_list_data_find(s->plugins, p))
+ return selectors[i];
+ }
+
+ return NULL;
+}
+
EAPI void
evry_item_select(const Evry_State *state, Evry_Item *it)
{
Evry_State *s = (Evry_State *)state;
- if (!s && it && selector && selector->state)
+ if (!s && it)
{
- s = selector->state;
- if (s->plugin != it->plugin)
+ Evry_Selector *sel = _selector_for_plugin_get(it->plugin);
+ if (sel && sel->state)
+ s = sel->state;
+ else
return;
}
{
Evry_State *s;
Evry_Plugin *agg;
-
+ Evry_Selector *sel;
+
if (!win) return;
- s = selector->state;
- agg = selector->aggregator;
+ DBG("plugin: %s", p->name);
- /* received data from a plugin of the current selector ? */
- if (!s || !eina_list_data_find(s->plugins, p))
- {
- /* if (p->type == type_action) */
- /* TODO */
- return;
- }
+ sel = _selector_for_plugin_get(p);
+ if (!sel || !sel->state) return;
+ s = sel->state;
+ agg = sel->aggregator;
+
if (action == EVRY_ASYNC_UPDATE_ADD)
{
if (!p->items)
/* update aggregator */
if ((eina_list_count(s->cur_plugins) > 1 ) ||
/* add aggregator for actions */
- (selector == selectors[1] &&
+ (sel == selectors[1] &&
(eina_list_count(s->cur_plugins) > 0 )))
{
/* add aggregator */
/* plugin is visible */
if ((s->plugin == p) || (s->plugin == agg))
- _evry_selector_update(selector);
+ {
+ _evry_selector_update(sel);
+ }
_evry_view_update(s, NULL);
}