be more lenient on valid exe's in ibar, e apps, menus.
close fwin's if dir is deleted. SVN revision: 26657
This commit is contained in:
parent
44edde0092
commit
e46db8b050
3
TODO
3
TODO
|
@ -26,11 +26,12 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
ESSENTIAL FEATURES
|
ESSENTIAL FEATURES
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
* fm2 needs a right-click file properties dialog
|
||||||
* fm2 needs a way to set custom backgrounds and handle scrolling
|
* fm2 needs a way to set custom backgrounds and handle scrolling
|
||||||
* fm2 needs to display symlink info on files somehow
|
* fm2 needs to display symlink info on files somehow
|
||||||
* fm2 needs to display more than 1 file being dragged (if more than 1 is being
|
* fm2 needs to display more than 1 file being dragged (if more than 1 is being
|
||||||
dragged)
|
dragged)
|
||||||
* fm2 needs a way of mapping a mimetype to 1 ore more commands to execute or
|
* fm2 needs a way of mapping a mimetype to 1 or more commands to execute or
|
||||||
internal e actions to do (like add as wallpaper etc.)
|
internal e actions to do (like add as wallpaper etc.)
|
||||||
* fm2 needs a way to use custom icons per dir/file
|
* fm2 needs a way to use custom icons per dir/file
|
||||||
* fm2 needs a icon views (auto-arrange, snap to grid and free placement)
|
* fm2 needs a icon views (auto-arrange, snap to grid and free placement)
|
||||||
|
|
100
src/bin/e_apps.c
100
src/bin/e_apps.c
|
@ -416,63 +416,63 @@ e_app_new(const char *path, int scan_subdirs)
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((a) && (a->path))
|
if ((a) && (a->path))
|
||||||
{
|
{
|
||||||
if ((!in_all) && (strncmp(a->path, _e_apps_path_all, strlen(_e_apps_path_all)) == 0))
|
if ((!in_all) && (strncmp(a->path, _e_apps_path_all, strlen(_e_apps_path_all)) == 0))
|
||||||
in_all = 1;
|
in_all = 1;
|
||||||
if (ecore_file_is_dir(a->path))
|
if (ecore_file_is_dir(a->path))
|
||||||
{
|
{
|
||||||
if ((!a->idle_fill) && (!a->filled))
|
if ((!a->idle_fill) && (!a->filled))
|
||||||
{
|
{
|
||||||
snprintf(buf, sizeof(buf), "%s/.directory", path);
|
snprintf(buf, sizeof(buf), "%s/.directory", path);
|
||||||
if (ecore_file_exists(buf))
|
if (ecore_file_exists(buf))
|
||||||
e_app_fields_fill(a, buf);
|
e_app_fields_fill(a, buf);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
a->name = evas_stringshare_add(ecore_file_get_file(a->path));
|
a->name = evas_stringshare_add(ecore_file_get_file(a->path));
|
||||||
a->filled = 1;
|
a->filled = 1;
|
||||||
a->idle_fill = 1;
|
a->idle_fill = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!a->filled) goto error;
|
if (!a->filled) goto error;
|
||||||
if (scan_subdirs)
|
if (scan_subdirs)
|
||||||
{
|
{
|
||||||
if (stated)
|
if (stated)
|
||||||
_e_app_subdir_rescan(a);
|
_e_app_subdir_rescan(a);
|
||||||
else
|
else
|
||||||
e_app_subdir_scan(a, scan_subdirs);
|
e_app_subdir_scan(a, scan_subdirs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Don't monitor the all directory, all changes to that must go through e_app. */
|
/* Don't monitor the all directory, all changes to that must go through e_app. */
|
||||||
if ((!stated) && (strcmp(_e_apps_path_all, a->path) != 0))
|
if ((!stated) && (strcmp(_e_apps_path_all, a->path) != 0))
|
||||||
a->monitor = ecore_file_monitor_add(a->path, _e_app_cb_monitor, a);
|
a->monitor = ecore_file_monitor_add(a->path, _e_app_cb_monitor, a);
|
||||||
}
|
}
|
||||||
else if (_e_app_is_eapp(a->path))
|
else if (_e_app_is_eapp(a->path))
|
||||||
{
|
{
|
||||||
if ((!a->idle_fill) && (!a->filled))
|
if ((!a->idle_fill) && (!a->filled))
|
||||||
e_app_fields_fill(a, a->path);
|
e_app_fields_fill(a, a->path);
|
||||||
|
|
||||||
/* no exe field.. not valid. drop it */
|
/* no exe field.. not valid. drop it */
|
||||||
// if (!_e_app_exe_valid_get(a->exe))
|
// if (!_e_app_exe_valid_get(a->exe))
|
||||||
// goto error;
|
// goto error;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
if (virtual_app)
|
if (virtual_app)
|
||||||
{
|
{
|
||||||
a2 = E_OBJECT_ALLOC(E_App, E_APP_TYPE, _e_app_free);
|
a2 = E_OBJECT_ALLOC(E_App, E_APP_TYPE, _e_app_free);
|
||||||
if (a2)
|
if (a2)
|
||||||
{
|
{
|
||||||
if (_e_app_copy(a2, a))
|
if (_e_app_copy(a2, a))
|
||||||
a->references = evas_list_append(a->references, a2);
|
a->references = evas_list_append(a->references, a2);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
e_object_del(E_OBJECT(a2));
|
e_object_del(E_OBJECT(a2));
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
/* Timestamp the cache, and no need to stat the file twice if the cache was stale. */
|
/* Timestamp the cache, and no need to stat the file twice if the cache was stale. */
|
||||||
if ((stated) || (stat(a->path, &st) >= 0))
|
if ((stated) || (stat(a->path, &st) >= 0))
|
||||||
|
@ -480,7 +480,7 @@ e_app_new(const char *path, int scan_subdirs)
|
||||||
a->mtime = st.st_mtime;
|
a->mtime = st.st_mtime;
|
||||||
stated = 1;
|
stated = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (new_app)
|
if (new_app)
|
||||||
{
|
{
|
||||||
_e_apps_every_app = evas_hash_direct_add(_e_apps_every_app, a->path, a);
|
_e_apps_every_app = evas_hash_direct_add(_e_apps_every_app, a->path, a);
|
||||||
|
@ -492,13 +492,13 @@ e_app_new(const char *path, int scan_subdirs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((_e_apps_all) && (_e_apps_all->subapps) && (in_all))
|
else if ((_e_apps_all) && (_e_apps_all->subapps) && (in_all))
|
||||||
_e_apps_all->subapps = evas_list_remove(_e_apps_all->subapps, a);
|
_e_apps_all->subapps = evas_list_remove(_e_apps_all->subapps, a);
|
||||||
if ((_e_apps_all) && (a != _e_apps_all) && (in_all))
|
if ((_e_apps_all) && (a != _e_apps_all) && (in_all))
|
||||||
_e_apps_all->subapps = evas_list_prepend(_e_apps_all->subapps, a);
|
_e_apps_all->subapps = evas_list_prepend(_e_apps_all->subapps, a);
|
||||||
|
|
||||||
if (virtual_app)
|
if (virtual_app)
|
||||||
a = a2;
|
a = a2;
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -2502,6 +2502,7 @@ _e_app_cb_monitor(void *data, Ecore_File_Monitor *em,
|
||||||
e_app_fields_fill(a, path);
|
e_app_fields_fill(a, path);
|
||||||
if (a->filled)
|
if (a->filled)
|
||||||
{
|
{
|
||||||
|
/* allow invalid apps
|
||||||
if (!_e_app_exe_valid_get(a->exe))
|
if (!_e_app_exe_valid_get(a->exe))
|
||||||
{
|
{
|
||||||
a->deleted = 1;
|
a->deleted = 1;
|
||||||
|
@ -2517,6 +2518,7 @@ _e_app_cb_monitor(void *data, Ecore_File_Monitor *em,
|
||||||
_e_app_subdir_rescan(app);
|
_e_app_subdir_rescan(app);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
*/
|
||||||
{
|
{
|
||||||
_e_app_change(a, E_APP_CHANGE);
|
_e_app_change(a, E_APP_CHANGE);
|
||||||
for (l = a->references; l; l = l->next)
|
for (l = a->references; l; l = l->next)
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
static void _e_fwin_free(E_Fwin *fwin);
|
static void _e_fwin_free(E_Fwin *fwin);
|
||||||
static void _e_fwin_cb_delete(E_Win *win);
|
static void _e_fwin_cb_delete(E_Win *win);
|
||||||
static void _e_fwin_cb_resize(E_Win *win);
|
static void _e_fwin_cb_resize(E_Win *win);
|
||||||
|
static void _e_fwin_deleted(void *data, Evas_Object *obj, void *event_info);
|
||||||
static void _e_fwin_changed(void *data, Evas_Object *obj, void *event_info);
|
static void _e_fwin_changed(void *data, Evas_Object *obj, void *event_info);
|
||||||
static void _e_fwin_selected(void *data, Evas_Object *obj, void *event_info);
|
static void _e_fwin_selected(void *data, Evas_Object *obj, void *event_info);
|
||||||
static void _e_fwin_menu_extend(void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info);
|
static void _e_fwin_menu_extend(void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info);
|
||||||
|
@ -85,6 +86,8 @@ e_fwin_new(E_Container *con, const char *dev, const char *path)
|
||||||
e_fm2_config_set(o, &fmc);
|
e_fm2_config_set(o, &fmc);
|
||||||
evas_object_smart_callback_add(o, "dir_changed",
|
evas_object_smart_callback_add(o, "dir_changed",
|
||||||
_e_fwin_changed, fwin);
|
_e_fwin_changed, fwin);
|
||||||
|
evas_object_smart_callback_add(o, "dir_deleted",
|
||||||
|
_e_fwin_deleted, fwin);
|
||||||
evas_object_smart_callback_add(o, "selected",
|
evas_object_smart_callback_add(o, "selected",
|
||||||
_e_fwin_selected, fwin);
|
_e_fwin_selected, fwin);
|
||||||
e_fm2_path_set(o, dev, path);
|
e_fm2_path_set(o, dev, path);
|
||||||
|
@ -161,6 +164,15 @@ _e_fwin_cb_resize(E_Win *win)
|
||||||
evas_object_resize(fwin->scrollframe_obj, fwin->win->w, fwin->win->h);
|
evas_object_resize(fwin->scrollframe_obj, fwin->win->w, fwin->win->h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_fwin_deleted(void *data, Evas_Object *obj, void *event_info)
|
||||||
|
{
|
||||||
|
E_Fwin *fwin;
|
||||||
|
|
||||||
|
fwin = data;
|
||||||
|
e_object_del(E_OBJECT(fwin));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_fwin_changed(void *data, Evas_Object *obj, void *event_info)
|
_e_fwin_changed(void *data, Evas_Object *obj, void *event_info)
|
||||||
{
|
{
|
||||||
|
|
|
@ -496,7 +496,7 @@ _e_int_menus_apps_scan(E_Menu *m)
|
||||||
{
|
{
|
||||||
a = l->data;
|
a = l->data;
|
||||||
|
|
||||||
if (e_app_valid_exe_get(a) || (!a->exe))
|
// if (e_app_valid_exe_get(a) || (!a->exe))
|
||||||
{
|
{
|
||||||
int opt = 0;
|
int opt = 0;
|
||||||
char label[4096];
|
char label[4096];
|
||||||
|
|
Loading…
Reference in New Issue