gadcon config generates new id's for new gadcon clients... properly.

SVN revision: 22736
This commit is contained in:
Carsten Haitzler 2006-05-19 12:56:47 +00:00
parent 8e9ee263e7
commit 0f5945349d
5 changed files with 54 additions and 10 deletions

View File

@ -1004,6 +1004,23 @@ e_gadcon_client_util_menu_attach(E_Gadcon_Client *gcc)
evas_object_event_callback_add(gcc->o_base, EVAS_CALLBACK_MOUSE_DOWN, _e_gadcon_client_cb_mouse_down, gcc);
}
EAPI E_Gadcon_Client *
e_gadcon_client_find(E_Gadcon *gc, char *name, char *id)
{
Evas_List *l;
for (l = gc->clients; l; l = l->next)
{
E_Gadcon_Client *gcc;
gcc = l->data;
if ((gcc->name) && (gcc->id) &&
(!strcmp(name, gcc->name)) && (!strcmp(id, gcc->id)))
return gcc;
}
return NULL;
}
/* local subsystem functions */
static void
_e_gadcon_free(E_Gadcon *gc)
@ -1167,7 +1184,9 @@ _e_gadcon_client_save(E_Gadcon_Client *gcc)
for (l = e_config->gadcons; l; l = l->next)
{
cf_gc = l->data;
if ((!strcmp(cf_gc->name, gcc->gadcon->name)) &&
if ((cf_gc->name) && (gcc->gadcon->name) &&
(cf_gc->id) && (gcc->gadcon->id) &&
(!strcmp(cf_gc->name, gcc->gadcon->name)) &&
(!strcmp(cf_gc->id, gcc->gadcon->id)))
{
ok++;
@ -1175,7 +1194,9 @@ _e_gadcon_client_save(E_Gadcon_Client *gcc)
{
cf_gcc = l2->data;
if ((!strcmp(cf_gcc->name, gcc->name)) &&
if ((cf_gcc->name) && (gcc->name) &&
(cf_gcc->id) && (gcc->id) &&
(!strcmp(cf_gcc->name, gcc->name)) &&
(!strcmp(cf_gcc->id, gcc->id)))
{
cf_gcc->geom.pos = gcc->config.pos;

View File

@ -160,5 +160,7 @@ EAPI void e_gadcon_client_resizable_set(E_Gadcon_Client *gcc, int re
EAPI void e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu, int flags);
EAPI void e_gadcon_client_util_menu_attach(E_Gadcon_Client *gcc);
EAPI E_Gadcon_Client *e_gadcon_client_find(E_Gadcon *gc, char *name, char *id);
#endif
#endif

View File

@ -77,10 +77,11 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
Evas_List *l;
E_Config_Gadcon *cf_gc;
E_Config_Gadcon_Client *cf_gcc;
int ok = 0;
Evas_List *l, *l2;
E_Config_Gadcon *cf_gc, *cf_gc2;
E_Config_Gadcon_Client *cf_gcc, *cf_gcc2;
int i, ok = 0;
char buf[256];
cfdata->gc->config_dialog = cfd;
for (l = e_config->gadcons; l; l = l->next)
@ -113,9 +114,31 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
return 1; /* Apply was OK */
}
}
snprintf(buf, sizeof(buf), "default");
for (i = 0; ; i++)
{
ok = 1;
for (l = e_config->gadcons; l; l = l->next)
{
cf_gc2 = l->data;
for (l2 = cf_gc2->clients; l2; l2 = l2->next)
{
cf_gcc2 = l2->data;
if ((!cf_gcc2->name) || (!cf_gcc2->id)) continue;
if ((!strcmp(cf_gcc2->name, cfdata->cname)) && (!strcmp(cf_gcc2->id, buf)))
{
ok = 0;
break;
}
}
if (!ok) break;
}
if (ok) break;
snprintf(buf, sizeof(buf), "other-%i", ok);
}
cf_gcc = E_NEW(E_Config_Gadcon_Client, 1);
cf_gcc->name = evas_stringshare_add(cfdata->cname);
cf_gcc->id = evas_stringshare_add("default");
cf_gcc->id = evas_stringshare_add(buf);
cf_gcc->geom.res = 800;
cf_gcc->geom.size = 80;
cf_gcc->geom.pos = cf_gcc->geom.res - cf_gcc->geom.size;

View File

@ -150,7 +150,7 @@ _gc_init(E_Gadcon *gc, char *name, char *id, char *style)
e_drop_handler_add(inst,
_ibar_inst_cb_enter, _ibar_inst_cb_move,
_ibar_inst_cb_leave, _ibar_inst_cb_drop,
drop, 3, cx + x, cy + y, w, h);
drop, 3, cx + x, cy + y, w, h);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE,
_ibar_cb_obj_moveresize, inst);
evas_object_event_callback_add(o, EVAS_CALLBACK_RESIZE,

View File

@ -1334,8 +1334,6 @@ _pager_window_cb_mouse_move(void *data, Evas *e, Evas_Object *obj, void *event_i
ev = event_info;
pw = data;
printf("MOV %i %i!\n", ev->cur.output.x, ev->cur.output.y);
if (!pw) return;
/* prevent drag for a few pixels */
if (pw->drag.start)