Combos work now, fix popup placement, move burn image gui stuff into its own file.
This commit is contained in:
@ -1,6 +1,36 @@
|
||||
/* vim: set sw=3 ts=3 sts=3 expandtab: */
|
||||
#include "ecdb.h"
|
||||
|
||||
static void
|
||||
_widget_focus_handle(void *data, Evas_Object *o, const char *emission,
|
||||
const char *source)
|
||||
{
|
||||
static char *old_source;
|
||||
const char *name;
|
||||
Evas_Object *eo;
|
||||
|
||||
name = data;
|
||||
// Some widgets aren't named (such as when in combo), so check
|
||||
if (!name)
|
||||
return;
|
||||
|
||||
if ((old_source) && (strcmp(old_source, source)))
|
||||
{
|
||||
eo = evas_object_name_find(ecore_evas_get(em->main_win_ee), old_source);
|
||||
edje_object_signal_emit(eo, "ecdb,focus,out", "ecdb");
|
||||
FREE(old_source);
|
||||
old_source = strdup(name);
|
||||
}
|
||||
else if (!old_source)
|
||||
{
|
||||
old_source = strdup(name);
|
||||
}
|
||||
|
||||
// Send focus to the freshly clicked widget
|
||||
eo = evas_object_name_find(ecore_evas_get(em->main_win_ee), name);
|
||||
evas_object_focus_set(eo, 1);
|
||||
}
|
||||
|
||||
Evas_Object *
|
||||
ecdb_widget_add(Evas_Object *parent, const char *name)
|
||||
{
|
||||
@ -8,6 +38,9 @@ ecdb_widget_add(Evas_Object *parent, const char *name)
|
||||
int x, y, w, h;
|
||||
|
||||
o = edje_object_add(evas_object_evas_get(parent));
|
||||
edje_object_signal_callback_add(o, "mouse,down,*", "*",
|
||||
_widget_focus_handle,
|
||||
(void *)name);
|
||||
|
||||
if (name)
|
||||
{
|
||||
@ -123,7 +156,7 @@ ecdb_check_states_set(Evas_Object *c, const char *ystate, const char *nstate)
|
||||
}
|
||||
|
||||
void
|
||||
ecdb_check_state_set(Evas_Object *c, int state)
|
||||
ecdb_check_checked_set(Evas_Object *c, int state)
|
||||
{
|
||||
Check_Data *cd;
|
||||
|
||||
@ -307,6 +340,14 @@ _entry_markup_to_text(const char *mkup)
|
||||
return str;
|
||||
}
|
||||
|
||||
static void
|
||||
_entry_click_cb_call(void *data, Evas_Object *obj, const char *emission,
|
||||
const char *source)
|
||||
{
|
||||
evas_object_focus_set(obj, 1);
|
||||
evas_object_smart_callback_call(obj, "clicked", NULL);
|
||||
}
|
||||
|
||||
Evas_Object *
|
||||
ecdb_entry_add(Evas_Object *parent, const char *name)
|
||||
{
|
||||
@ -316,6 +357,8 @@ ecdb_entry_add(Evas_Object *parent, const char *name)
|
||||
edje_object_file_set(e, em->theme_path, "ecdb/entry");
|
||||
em->dnd_candidates = eina_list_append(em->dnd_candidates, e);
|
||||
evas_object_data_set(e, "dnd_call_func", ecdb_dnd_entry_dnd_set);
|
||||
edje_object_signal_callback_add(e, "clicked", "ecdb", _entry_click_cb_call,
|
||||
e);
|
||||
|
||||
return e;
|
||||
}
|
||||
@ -345,7 +388,8 @@ struct _Combo_Data
|
||||
int selected;
|
||||
const char *name;
|
||||
const char *header;
|
||||
Evas_Object * (*create_header)(Evas_Object *, const char *name,
|
||||
void *data;
|
||||
Evas_Object * (*create_header)(Evas_Object *, const char *name, void *data,
|
||||
Evas_Object *, int);
|
||||
};
|
||||
|
||||
@ -387,7 +431,7 @@ _combo_best_location(Evas_Object *c)
|
||||
ecore_evas_geometry_get(em->main_win_ee, NULL, NULL, &ww, &wh);
|
||||
evas_object_geometry_get(c, &x, &y, &w, &h);
|
||||
|
||||
if ((h) > (wh - y - h))
|
||||
if ((y + h) > (wh - y - h))
|
||||
{
|
||||
return "top";
|
||||
}
|
||||
@ -455,7 +499,8 @@ _combo_clicked(void *data, Evas_Object *obj, void *event_info)
|
||||
cd->selected = i;
|
||||
|
||||
if (cd->create_header)
|
||||
header = cd->create_header(data, "ecdb.header.swallow", swallow, i);
|
||||
header = cd->create_header(data, "ecdb.header.swallow", cd->data,
|
||||
swallow, i);
|
||||
edje_object_signal_emit(data, "ecdb,combo,header,swallow", "ecdb");
|
||||
ecdb_combo_collapse(data);
|
||||
}
|
||||
@ -563,6 +608,9 @@ ecdb_combo_expand(Evas_Object *c)
|
||||
|
||||
cd = evas_object_data_get(c, "cd");
|
||||
|
||||
if (cd->count == 0)
|
||||
return;
|
||||
|
||||
edje_object_signal_emit(c, "ecdb,combo,active", "ecdb");
|
||||
|
||||
evas_object_move(cd->back, 0, 0);
|
||||
@ -635,7 +683,7 @@ ecdb_combo_collapse(Evas_Object *c)
|
||||
void
|
||||
ecdb_combo_header_create_set(Evas_Object *c, Evas_Object * (*func)
|
||||
(Evas_Object *c, const char *name,
|
||||
Evas_Object *clicked, int idx))
|
||||
void *data, Evas_Object *clicked, int idx))
|
||||
{
|
||||
Combo_Data *cd;
|
||||
|
||||
@ -653,6 +701,15 @@ ecdb_combo_selected_get(Evas_Object *c)
|
||||
return cd->selected;
|
||||
}
|
||||
|
||||
void
|
||||
ecdb_combo_data_set(Evas_Object *c, void *data)
|
||||
{
|
||||
Combo_Data *cd;
|
||||
|
||||
cd = evas_object_data_get(c, "cd");
|
||||
cd->data = data;
|
||||
}
|
||||
|
||||
/******************************* Label ***************************************/
|
||||
|
||||
Evas_Object *
|
||||
|
Reference in New Issue
Block a user