forked from enlightenment/enlightenment
handle efreet desktop shange events in defapps.
SVN revision: 62188
This commit is contained in:
parent
0dd3cb2acd
commit
8db0d747ff
|
@ -34,6 +34,9 @@ struct _E_Config_Dialog_Data
|
||||||
const char *mailto_desktop;
|
const char *mailto_desktop;
|
||||||
const char *file_desktop;
|
const char *file_desktop;
|
||||||
const char *trash_desktop;
|
const char *trash_desktop;
|
||||||
|
|
||||||
|
Ecore_Event_Handler *desk_change_handler;
|
||||||
|
int gen;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* local function prototypes */
|
/* local function prototypes */
|
||||||
|
@ -42,6 +45,7 @@ static void _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cf
|
||||||
static Evas_Object *_basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata);
|
static Evas_Object *_basic_create(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata);
|
||||||
static int _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata);
|
static int _basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata);
|
||||||
|
|
||||||
|
static Eina_Bool _desks_update(void *data, int ev_type __UNUSED__, void *ev __UNUSED__);
|
||||||
static void _load_mimes(E_Config_Dialog_Data *cfdata, char *file);
|
static void _load_mimes(E_Config_Dialog_Data *cfdata, char *file);
|
||||||
static void _load_globs(E_Config_Dialog_Data *cfdata, char *file);
|
static void _load_globs(E_Config_Dialog_Data *cfdata, char *file);
|
||||||
static int _sort_mimes(const void *data1, const void *data2);
|
static int _sort_mimes(const void *data1, const void *data2);
|
||||||
|
@ -85,6 +89,9 @@ _create_data(E_Config_Dialog *cfd __UNUSED__)
|
||||||
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
cfdata = E_NEW(E_Config_Dialog_Data, 1);
|
||||||
if (!cfdata) return NULL;
|
if (!cfdata) return NULL;
|
||||||
|
|
||||||
|
cfdata->desk_change_handler = ecore_event_handler_add
|
||||||
|
(EFREET_EVENT_DESKTOP_CACHE_UPDATE, _desks_update, cfdata);
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%s/applications/defaults.list",
|
snprintf(buf, sizeof(buf), "%s/applications/defaults.list",
|
||||||
efreet_data_home_get());
|
efreet_data_home_get());
|
||||||
myini = efreet_ini_new(buf);
|
myini = efreet_ini_new(buf);
|
||||||
|
@ -191,15 +198,32 @@ _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
|
||||||
if (cfdata->ini) efreet_ini_free(cfdata->ini);
|
if (cfdata->ini) efreet_ini_free(cfdata->ini);
|
||||||
EINA_LIST_FREE(cfdata->desks, desk)
|
EINA_LIST_FREE(cfdata->desks, desk)
|
||||||
efreet_desktop_free(desk);
|
efreet_desktop_free(desk);
|
||||||
|
if (cfdata->desk_change_handler)
|
||||||
|
ecore_event_handler_del(cfdata->desk_change_handler);
|
||||||
E_FREE(cfdata);
|
E_FREE(cfdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_desks_update(void *data, int ev_type __UNUSED__, void *ev __UNUSED__)
|
||||||
|
{
|
||||||
|
E_Config_Dialog_Data *cfdata = data;
|
||||||
|
Efreet_Desktop *desk;
|
||||||
|
EINA_LIST_FREE(cfdata->desks, desk)
|
||||||
|
efreet_desktop_free(desk);
|
||||||
|
if (cfdata->gen)
|
||||||
|
_fill_apps_list(cfdata, cfdata->obj.deflist, &(cfdata->selapp), 1);
|
||||||
|
else
|
||||||
|
_fill_apps_list(cfdata, cfdata->obj.deflist, cfdata->seldest, 0);
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_def_browser_cb(void *data)
|
_def_browser_cb(void *data)
|
||||||
{
|
{
|
||||||
E_Config_Dialog_Data *cfdata = data;
|
E_Config_Dialog_Data *cfdata = data;
|
||||||
cfdata->seldest = &(cfdata->browser_desktop);
|
cfdata->seldest = &(cfdata->browser_desktop);
|
||||||
_fill_apps_list(cfdata, cfdata->obj.deflist, cfdata->seldest, 0);
|
_fill_apps_list(cfdata, cfdata->obj.deflist, cfdata->seldest, 0);
|
||||||
|
cfdata->gen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -208,6 +232,7 @@ _def_mailto_cb(void *data)
|
||||||
E_Config_Dialog_Data *cfdata = data;
|
E_Config_Dialog_Data *cfdata = data;
|
||||||
cfdata->seldest = &(cfdata->mailto_desktop);
|
cfdata->seldest = &(cfdata->mailto_desktop);
|
||||||
_fill_apps_list(cfdata, cfdata->obj.deflist, cfdata->seldest, 0);
|
_fill_apps_list(cfdata, cfdata->obj.deflist, cfdata->seldest, 0);
|
||||||
|
cfdata->gen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -216,6 +241,7 @@ _def_file_cb(void *data)
|
||||||
E_Config_Dialog_Data *cfdata = data;
|
E_Config_Dialog_Data *cfdata = data;
|
||||||
cfdata->seldest = &(cfdata->file_desktop);
|
cfdata->seldest = &(cfdata->file_desktop);
|
||||||
_fill_apps_list(cfdata, cfdata->obj.deflist, cfdata->seldest, 0);
|
_fill_apps_list(cfdata, cfdata->obj.deflist, cfdata->seldest, 0);
|
||||||
|
cfdata->gen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -224,6 +250,7 @@ _def_trash_cb(void *data)
|
||||||
E_Config_Dialog_Data *cfdata = data;
|
E_Config_Dialog_Data *cfdata = data;
|
||||||
cfdata->seldest = &(cfdata->trash_desktop);
|
cfdata->seldest = &(cfdata->trash_desktop);
|
||||||
_fill_apps_list(cfdata, cfdata->obj.deflist, cfdata->seldest, 0);
|
_fill_apps_list(cfdata, cfdata->obj.deflist, cfdata->seldest, 0);
|
||||||
|
cfdata->gen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -238,6 +265,7 @@ _sel_mime_cb(void *data)
|
||||||
if (s) cfdata->selapp = eina_stringshare_add(s);
|
if (s) cfdata->selapp = eina_stringshare_add(s);
|
||||||
}
|
}
|
||||||
_fill_apps_list(cfdata, cfdata->obj.mimelist, &(cfdata->selapp), 1);
|
_fill_apps_list(cfdata, cfdata->obj.mimelist, &(cfdata->selapp), 1);
|
||||||
|
cfdata->gen = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Evas_Object *
|
static Evas_Object *
|
||||||
|
|
Loading…
Reference in New Issue