Ephoto: Support symlinked dirs.
This commit is contained in:
parent
ccbc11373c
commit
49f792d962
|
@ -391,11 +391,13 @@ _check_for_subdirs(Ephoto_Entry *entry)
|
|||
return EINA_FALSE;
|
||||
EINA_ITERATOR_FOREACH(ls, info)
|
||||
{
|
||||
if (info->type == EINA_FILE_DIR)
|
||||
{
|
||||
eina_iterator_free(ls);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
if (info->type != EINA_FILE_DIR && info->type != EINA_FILE_LNK)
|
||||
continue;
|
||||
if (info->type == EINA_FILE_LNK && !ecore_file_is_dir(
|
||||
ecore_file_realpath(info->path)))
|
||||
continue;
|
||||
eina_iterator_free(ls);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
eina_iterator_free(ls);
|
||||
return EINA_FALSE;
|
||||
|
@ -729,7 +731,7 @@ _monitor_cb(void *data, int type,
|
|||
return ECORE_CALLBACK_PASS_ON;
|
||||
if (type == EIO_MONITOR_DIRECTORY_CREATED)
|
||||
{
|
||||
if (!ecore_file_is_dir(ev->filename))
|
||||
if (!ecore_file_is_dir(ecore_file_realpath(ev->filename)))
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
if (ephoto_entry_exists(entry->ephoto, ev->filename))
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
|
@ -833,7 +835,7 @@ _monitor_cb(void *data, int type,
|
|||
}
|
||||
else if (type == EIO_MONITOR_DIRECTORY_MODIFIED)
|
||||
{
|
||||
if (!ecore_file_is_dir(ev->filename))
|
||||
if (!ecore_file_is_dir(ecore_file_realpath(ev->filename)))
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
if ((elm_genlist_item_expanded_get(entry->item) == EINA_TRUE))
|
||||
{
|
||||
|
@ -874,7 +876,7 @@ _top_monitor_cb(void *data, int type,
|
|||
return ECORE_CALLBACK_PASS_ON;
|
||||
if (type == EIO_MONITOR_DIRECTORY_CREATED)
|
||||
{
|
||||
if (!ecore_file_is_dir(ev->filename))
|
||||
if (!ecore_file_is_dir(ecore_file_realpath(ev->filename)))
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
if (ephoto_entry_exists(db->ephoto, ev->filename))
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
|
@ -924,7 +926,7 @@ _top_monitor_cb(void *data, int type,
|
|||
}
|
||||
else if (type == EIO_MONITOR_DIRECTORY_MODIFIED)
|
||||
{
|
||||
if (!ecore_file_is_dir(ev->filename))
|
||||
if (!ecore_file_is_dir(ecore_file_realpath(ev->filename)))
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
item = elm_genlist_first_item_get(db->fsel);
|
||||
while (item)
|
||||
|
@ -1068,6 +1070,11 @@ _ephoto_dir_entry_create(void *data, int type EINA_UNUSED, void *event)
|
|||
db->todo_items = eina_list_append(db->todo_items, e);
|
||||
db->animator.count++;
|
||||
}
|
||||
else if (ecore_file_is_dir(ecore_file_realpath(e->path)))
|
||||
{
|
||||
db->todo_items = eina_list_append(db->todo_items, e);
|
||||
db->animator.count++;
|
||||
}
|
||||
if (!db->animator.todo_items)
|
||||
db->animator.todo_items = ecore_animator_add(_todo_items_process, db);
|
||||
|
||||
|
@ -1185,8 +1192,12 @@ ephoto_directory_browser_initialize_structure(Ephoto *ephoto)
|
|||
cur = next;
|
||||
EINA_ITERATOR_FOREACH(it, finfo)
|
||||
{
|
||||
if (finfo->type == EINA_FILE_DIR &&
|
||||
strncmp(finfo->path + finfo->name_start, ".", 1))
|
||||
if (finfo->type != EINA_FILE_DIR && finfo->type != EINA_FILE_LNK)
|
||||
continue;
|
||||
if (finfo->type == EINA_FILE_LNK && !ecore_file_is_dir(
|
||||
ecore_file_realpath(finfo->path)))
|
||||
continue;
|
||||
if (strncmp(finfo->path + finfo->name_start, ".", 1))
|
||||
{
|
||||
Ephoto_Entry *entry = ephoto_entry_new(db->ephoto, finfo->path,
|
||||
finfo->path+finfo->name_start, finfo->type);
|
||||
|
|
|
@ -741,6 +741,10 @@ _ephoto_populate_filter(void *data, Eio_File *handler EINA_UNUSED,
|
|||
{
|
||||
return EINA_TRUE;
|
||||
}
|
||||
else if (info->type == EINA_FILE_LNK && !ed->thumbs_only)
|
||||
{
|
||||
return ecore_file_is_dir(ecore_file_realpath(info->path));
|
||||
}
|
||||
if (!ed->dirs_only)
|
||||
return _ephoto_eina_file_direct_info_image_useful(info);
|
||||
else
|
||||
|
@ -1065,7 +1069,10 @@ ephoto_entry_new(Ephoto *ephoto, const char *path, const char *label,
|
|||
entry->basename = ecore_file_file_get(entry->path);
|
||||
entry->label = eina_stringshare_add(label);
|
||||
if (type == EINA_FILE_DIR)
|
||||
entry->is_dir = EINA_TRUE;
|
||||
entry->is_dir = EINA_TRUE;
|
||||
else if (type == EINA_FILE_LNK && ecore_file_is_dir(
|
||||
ecore_file_realpath(entry->path)))
|
||||
entry->is_dir = EINA_TRUE;
|
||||
else
|
||||
entry->is_dir = EINA_FALSE;
|
||||
return entry;
|
||||
|
|
|
@ -1417,7 +1417,7 @@ _ephoto_thumb_entry_create(void *data, int type EINA_UNUSED, void *event)
|
|||
Ephoto_Entry *e;
|
||||
|
||||
e = ev->entry;
|
||||
if (!e->is_dir)
|
||||
if (!e->is_dir && !ecore_file_is_dir(ecore_file_realpath(e->path)))
|
||||
{
|
||||
Eina_File *f;
|
||||
|
||||
|
|
Loading…
Reference in New Issue