forked from enlightenment/enlightenment
parent
3dc62d700e
commit
6b3626b857
|
@ -0,0 +1,722 @@
|
|||
#include "file.h"
|
||||
#include "e_dir.h"
|
||||
#include "e_view_machine.h"
|
||||
#include "view.h"
|
||||
#include "icons.h"
|
||||
#include "util.h"
|
||||
#include "libefsd.h"
|
||||
#include "e_file.h"
|
||||
#include "globals.h"
|
||||
|
||||
static void e_dir_handle_fs_restart(void *data);
|
||||
static void e_dir_handle_fs(EfsdEvent * ev);
|
||||
static void e_dir_handle_efsd_event_reply(EfsdEvent * ev);
|
||||
static void e_dir_handle_efsd_event_reply_stat(EfsdEvent * ev);
|
||||
static void e_dir_handle_efsd_event_reply_readlink(EfsdEvent * ev);
|
||||
static void e_dir_handle_efsd_event_reply_getfiletype(EfsdEvent * ev);
|
||||
static void e_dir_handle_efsd_event_reply_getmeta(EfsdEvent * ev);
|
||||
|
||||
static void e_dir_cleanup(E_Dir * d);
|
||||
static void e_dir_bg_reload_timeout(int val, void *data);
|
||||
static void e_dir_set_default_background(E_Dir * d);
|
||||
|
||||
void
|
||||
e_dir_init(void)
|
||||
{
|
||||
D_ENTER;
|
||||
e_fs_add_event_handler(e_dir_handle_fs);
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_dir_cleanup(E_Dir * d)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
if (!d)
|
||||
D_RETURN;
|
||||
|
||||
efsd_stop_monitor(e_fs_get_connection(), d->dir, TRUE);
|
||||
if (d->restarter)
|
||||
e_fs_del_restart_handler(d->restarter);
|
||||
|
||||
d->restarter = NULL;
|
||||
e_view_machine_unregister_dir(d);
|
||||
|
||||
e_object_cleanup(E_OBJECT(d));
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
E_Dir *
|
||||
e_dir_new(void)
|
||||
{
|
||||
E_Dir *d;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
d = NEW(E_Dir, 1);
|
||||
ZERO(d, E_Dir, 1);
|
||||
d->dir = NULL;
|
||||
d->views = NULL;
|
||||
|
||||
e_object_init(E_OBJECT(d), (E_Cleanup_Func) e_dir_cleanup);
|
||||
|
||||
e_view_machine_register_dir(d);
|
||||
D_RETURN_(d);
|
||||
}
|
||||
|
||||
void
|
||||
e_dir_register_view(E_Dir * d, E_View * v)
|
||||
{
|
||||
D_ENTER;
|
||||
v->dir = d;
|
||||
d->views = evas_list_append(d->views, v);
|
||||
/* dont ref the first time */
|
||||
if (d->views->next)
|
||||
e_object_ref(E_OBJECT(v->dir));
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_dir_unregister_view(E_View * v)
|
||||
{
|
||||
D_ENTER;
|
||||
v->dir->views = evas_list_remove(v->dir->views, v);
|
||||
e_object_unref(E_OBJECT(v->dir));
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_dir_set_default_background(E_Dir * d)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!d)
|
||||
D_RETURN;
|
||||
|
||||
IF_FREE(d->bg_file);
|
||||
|
||||
if (d->is_desktop)
|
||||
snprintf(buf, PATH_MAX, "%s/default.bg.db", e_config_get("backgrounds"));
|
||||
else
|
||||
snprintf(buf, PATH_MAX, "%s/view.bg.db", e_config_get("backgrounds"));
|
||||
|
||||
e_strdup(d->bg_file, buf);
|
||||
snprintf(buf, PATH_MAX, "background_reload:%s", d->dir);
|
||||
|
||||
ecore_add_event_timer(buf, 0.5, e_dir_bg_reload_timeout, 0, d);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_dir_handle_fs_restart(void *data)
|
||||
{
|
||||
E_Dir *d;
|
||||
|
||||
D_ENTER;
|
||||
d = data;
|
||||
D("e_dir_handle_fs_restart\n");
|
||||
if (e_fs_get_connection())
|
||||
{
|
||||
EfsdOptions *ops;
|
||||
|
||||
/* FIXME restart with metadata pending for views */
|
||||
|
||||
ops = efsd_ops(3,
|
||||
efsd_op_get_stat(),
|
||||
efsd_op_get_filetype(), efsd_op_list_all());
|
||||
d->monitor_id = efsd_start_monitor(e_fs_get_connection(), d->dir,
|
||||
ops, TRUE);
|
||||
|
||||
}
|
||||
D("restarted monitor id (connection = %p), %i for %s\n",
|
||||
e_fs_get_connection(), d->monitor_id, d->dir);
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_dir_set_dir(E_Dir * d, char *dir)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
if (!d)
|
||||
D_RETURN;
|
||||
|
||||
/* stop monitoring old dir */
|
||||
if ((d->dir) && (d->monitor_id))
|
||||
{
|
||||
efsd_stop_monitor(e_fs_get_connection(), d->dir, TRUE);
|
||||
d->monitor_id = 0;
|
||||
}
|
||||
|
||||
IF_FREE(d->dir);
|
||||
d->dir = e_file_realpath(dir);
|
||||
|
||||
/* start monitoring new dir */
|
||||
d->restarter = e_fs_add_restart_handler(e_dir_handle_fs_restart, d);
|
||||
if (e_fs_get_connection())
|
||||
{
|
||||
EfsdOptions *ops;
|
||||
|
||||
ops = efsd_ops(3,
|
||||
efsd_op_get_stat(),
|
||||
efsd_op_get_filetype(), efsd_op_list_all());
|
||||
d->monitor_id = efsd_start_monitor(e_fs_get_connection(), d->dir,
|
||||
ops, TRUE);
|
||||
D("monitor id for %s = %i\n", d->dir, d->monitor_id);
|
||||
}
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_dir_handle_fs(EfsdEvent * ev)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
if (!ev)
|
||||
D_RETURN;
|
||||
|
||||
switch (ev->type)
|
||||
{
|
||||
case EFSD_EVENT_FILECHANGE:
|
||||
switch (ev->efsd_filechange_event.changetype)
|
||||
{
|
||||
case EFSD_FILE_CREATED:
|
||||
e_dir_file_added(ev->efsd_filechange_event.id,
|
||||
ev->efsd_filechange_event.file);
|
||||
break;
|
||||
case EFSD_FILE_EXISTS:
|
||||
e_dir_file_added(ev->efsd_filechange_event.id,
|
||||
ev->efsd_filechange_event.file);
|
||||
break;
|
||||
case EFSD_FILE_DELETED:
|
||||
e_dir_file_deleted(ev->efsd_filechange_event.id,
|
||||
ev->efsd_filechange_event.file);
|
||||
break;
|
||||
case EFSD_FILE_CHANGED:
|
||||
e_dir_file_changed(ev->efsd_filechange_event.id,
|
||||
ev->efsd_filechange_event.file);
|
||||
break;
|
||||
case EFSD_FILE_MOVED:
|
||||
e_dir_file_moved(ev->efsd_filechange_event.id,
|
||||
ev->efsd_filechange_event.file);
|
||||
break;
|
||||
case EFSD_FILE_END_EXISTS:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case EFSD_EVENT_REPLY:
|
||||
e_dir_handle_efsd_event_reply(ev);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_dir_handle_efsd_event_reply_getfiletype(EfsdEvent * ev)
|
||||
{
|
||||
E_File *f;
|
||||
char *file = NULL;
|
||||
Evas_List l;
|
||||
E_Dir *dir;
|
||||
|
||||
char *m, *p;
|
||||
char mime[PATH_MAX], base[PATH_MAX];
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!ev)
|
||||
D_RETURN;
|
||||
|
||||
if (!ev->efsd_reply_event.errorcode == 0)
|
||||
D_RETURN;
|
||||
|
||||
if ((file = efsd_event_filename(ev)))
|
||||
{
|
||||
file = e_file_get_file(file);
|
||||
}
|
||||
dir = e_dir_find_by_monitor_id(efsd_event_id(ev));
|
||||
|
||||
f = e_file_get_by_name(dir->files, file);
|
||||
/* if its not in the list we care about, its filetype is meaningless */
|
||||
if (!f)
|
||||
D_RETURN;
|
||||
|
||||
m = ev->efsd_reply_event.data;
|
||||
p = strchr(m, '/');
|
||||
if (p)
|
||||
{
|
||||
strcpy(base, m);
|
||||
strcpy(mime, p + 1);
|
||||
p = strchr(base, '/');
|
||||
*p = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(base, m);
|
||||
strcpy(mime, "unknown");
|
||||
}
|
||||
e_file_set_mime(f, base, mime);
|
||||
|
||||
for (l = dir->views; l; l = l->next)
|
||||
{
|
||||
E_View *v = (E_View *) l->data;
|
||||
E_Icon *ic = e_icon_find_by_file(v, f->file);
|
||||
|
||||
/* Try to update the GUI.
|
||||
* It's just a try because we need to have the file's stat
|
||||
* info as well. --cK.
|
||||
*/
|
||||
e_icon_update_state(ic);
|
||||
e_icon_initial_show(ic);
|
||||
}
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_dir_handle_efsd_event_reply_stat(EfsdEvent * ev)
|
||||
{
|
||||
E_Dir *d;
|
||||
E_File *f;
|
||||
Evas_List l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!ev)
|
||||
D_RETURN;
|
||||
|
||||
if (!ev->efsd_reply_event.errorcode == 0)
|
||||
D_RETURN;
|
||||
|
||||
d = e_dir_find_by_monitor_id(efsd_event_id(ev));
|
||||
f = e_file_get_by_name(d->files, e_file_get_file(efsd_event_filename(ev)));
|
||||
/* if its not in the list we care about, return */
|
||||
if (!f)
|
||||
D_RETURN;
|
||||
|
||||
/* When everything went okay and we can find a dir,
|
||||
* set the file stat data for the file and try to update the gui.
|
||||
* It's just a try because we need to have received the filetype
|
||||
* info too. --cK. */
|
||||
f->stat = *((struct stat *)efsd_event_data(ev));
|
||||
for (l = d->views; l; l = l->next)
|
||||
{
|
||||
E_View *v = (E_View *) l->data;
|
||||
E_Icon *ic = e_icon_find_by_file(v, f->file);
|
||||
|
||||
e_icon_update_state(ic);
|
||||
e_icon_initial_show(ic);
|
||||
}
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_dir_handle_efsd_event_reply_readlink(EfsdEvent * ev)
|
||||
{
|
||||
E_Dir *d;
|
||||
E_File *f;
|
||||
Evas_List l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!ev)
|
||||
D_RETURN;
|
||||
|
||||
if (!ev->efsd_reply_event.errorcode == 0)
|
||||
D_RETURN;
|
||||
|
||||
d = e_dir_find_by_monitor_id(efsd_event_id(ev));
|
||||
f = e_file_get_by_name(d->files, e_file_get_file(efsd_event_filename(ev)));
|
||||
if (f)
|
||||
{
|
||||
e_file_set_link(f, (char *)efsd_event_data(ev));
|
||||
}
|
||||
for (l = d->views; l; l = l->next)
|
||||
{
|
||||
E_View *v = (E_View *) l->data;
|
||||
E_Icon *ic = e_icon_find_by_file(v, f->file);
|
||||
|
||||
e_icon_update_state(ic);
|
||||
e_icon_initial_show(ic);
|
||||
}
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_dir_handle_efsd_event_reply_getmeta(EfsdEvent * ev)
|
||||
{
|
||||
Evas_List l;
|
||||
EfsdCmdId cmd;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!ev)
|
||||
D_RETURN;
|
||||
|
||||
cmd = efsd_event_id(ev);
|
||||
for (l = VM->views; l; l = l->next)
|
||||
{
|
||||
E_View *v;
|
||||
|
||||
v = l->data;
|
||||
/* ignore metadata for desktops */
|
||||
if (v->dir->is_desktop)
|
||||
continue;
|
||||
if (v->geom_get.x == cmd)
|
||||
{
|
||||
v->geom_get.x = 0;
|
||||
if (efsd_metadata_get_type(ev) == EFSD_INT)
|
||||
{
|
||||
if (ev->efsd_reply_event.errorcode == 0)
|
||||
efsd_metadata_get_int(ev, &(v->location.x));
|
||||
else
|
||||
v->location.x = 0;
|
||||
}
|
||||
}
|
||||
else if (v->geom_get.y == cmd)
|
||||
{
|
||||
v->geom_get.y = 0;
|
||||
if (efsd_metadata_get_type(ev) == EFSD_INT)
|
||||
{
|
||||
if (ev->efsd_reply_event.errorcode == 0)
|
||||
efsd_metadata_get_int(ev, &(v->location.y));
|
||||
else
|
||||
v->location.y = 0;
|
||||
|
||||
}
|
||||
}
|
||||
else if (v->geom_get.w == cmd)
|
||||
{
|
||||
v->geom_get.w = 0;
|
||||
if (efsd_metadata_get_type(ev) == EFSD_INT)
|
||||
{
|
||||
if (ev->efsd_reply_event.errorcode == 0)
|
||||
efsd_metadata_get_int(ev, &(v->size.w));
|
||||
else
|
||||
v->size.w = 400;
|
||||
}
|
||||
}
|
||||
else if (v->geom_get.h == cmd)
|
||||
{
|
||||
v->geom_get.h = 0;
|
||||
if (ev->efsd_reply_event.errorcode == 0)
|
||||
{
|
||||
if (ev->efsd_reply_event.errorcode == 0)
|
||||
efsd_metadata_get_int(ev, &(v->size.h));
|
||||
else
|
||||
v->size.h = 401;
|
||||
}
|
||||
}
|
||||
/* FIXME currently, the bg info is not set via metadata */
|
||||
/*
|
||||
* else if (v->getbg == cmd)
|
||||
* {
|
||||
* v->getbg = 0;
|
||||
* if (efsd_metadata_get_type(ev) == EFSD_STRING)
|
||||
* {
|
||||
* if (ev->efsd_reply_event.errorcode == 0)
|
||||
* {
|
||||
* char buf[PATH_MAX];
|
||||
*
|
||||
* IF_FREE(v->dir->bg_file);
|
||||
* e_strdup(v->dir->bg_file, efsd_metadata_get_str(ev));
|
||||
* snprintf(buf, PATH_MAX, "background_reload:%s", v->dir->dir);
|
||||
* ecore_add_event_timer(buf, 0.5, e_dir_bg_reload_timeout, 0, v->dir);
|
||||
* }
|
||||
* else
|
||||
* e_dir_set_default_background(v->dir);
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
/* We have received all metadata we need, display the view */
|
||||
if ((!v->geom_get.x) &&
|
||||
(!v->geom_get.y) &&
|
||||
(!v->geom_get.w) && (!v->geom_get.h) && (v->geom_get.busy))
|
||||
{
|
||||
E_Border *b;
|
||||
|
||||
ecore_window_move_resize(v->win.base, v->location.x, v->location.y,
|
||||
v->size.w, v->size.h);
|
||||
ecore_window_set_xy_hints(v->win.base, v->location.x,
|
||||
v->location.y);
|
||||
v->size.force = 1;
|
||||
v->geom_get.busy = 0;
|
||||
if (v->bg)
|
||||
e_bg_resize(v->bg, v->size.w, v->size.h);
|
||||
if (v->options.back_pixmap)
|
||||
e_view_update(v);
|
||||
b = e_border_adopt(v->win.base, 1);
|
||||
b->client.internal = 1;
|
||||
e_border_remove_click_grab(b);
|
||||
}
|
||||
}
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
static void
|
||||
e_dir_handle_efsd_event_reply(EfsdEvent * ev)
|
||||
{
|
||||
D_ENTER;
|
||||
|
||||
if (!ev)
|
||||
D_RETURN;
|
||||
|
||||
switch (ev->efsd_reply_event.command.type)
|
||||
{
|
||||
case EFSD_CMD_REMOVE:
|
||||
break;
|
||||
case EFSD_CMD_MOVE:
|
||||
break;
|
||||
case EFSD_CMD_SYMLINK:
|
||||
break;
|
||||
case EFSD_CMD_LISTDIR:
|
||||
break;
|
||||
case EFSD_CMD_MAKEDIR:
|
||||
break;
|
||||
case EFSD_CMD_CHMOD:
|
||||
break;
|
||||
case EFSD_CMD_GETFILETYPE:
|
||||
e_dir_handle_efsd_event_reply_getfiletype(ev);
|
||||
break;
|
||||
case EFSD_CMD_STAT:
|
||||
e_dir_handle_efsd_event_reply_stat(ev);
|
||||
break;
|
||||
case EFSD_CMD_READLINK:
|
||||
e_dir_handle_efsd_event_reply_readlink(ev);
|
||||
break;
|
||||
case EFSD_CMD_CLOSE:
|
||||
break;
|
||||
case EFSD_CMD_SETMETA:
|
||||
break;
|
||||
case EFSD_CMD_GETMETA:
|
||||
e_dir_handle_efsd_event_reply_getmeta(ev);
|
||||
break;
|
||||
case EFSD_CMD_STARTMON_DIR:
|
||||
break;
|
||||
case EFSD_CMD_STARTMON_FILE:
|
||||
break;
|
||||
case EFSD_CMD_STOPMON_DIR:
|
||||
break;
|
||||
case EFSD_CMD_STOPMON_FILE:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
D_RETURN;
|
||||
}
|
||||
static void
|
||||
e_dir_ib_reload_timeout(int val, void *data)
|
||||
{
|
||||
Evas_List l;
|
||||
E_View *v;
|
||||
E_Dir *d;
|
||||
|
||||
D_ENTER;
|
||||
d = data;
|
||||
|
||||
for (l = d->views; l; l = l->next)
|
||||
{
|
||||
v = (E_View *) l->data;
|
||||
e_view_ib_reload(v);
|
||||
}
|
||||
D_RETURN;
|
||||
UN(val);
|
||||
}
|
||||
|
||||
static void
|
||||
e_dir_bg_reload_timeout(int val, void *data)
|
||||
{
|
||||
Evas_List l;
|
||||
E_View *v;
|
||||
E_Dir *d;
|
||||
|
||||
D_ENTER;
|
||||
d = data;
|
||||
|
||||
for (l = d->views; l; l = l->next)
|
||||
{
|
||||
v = (E_View *) l->data;
|
||||
e_view_bg_reload(v);
|
||||
}
|
||||
D_RETURN;
|
||||
UN(val);
|
||||
}
|
||||
|
||||
void
|
||||
e_dir_file_added(int id, char *file)
|
||||
{
|
||||
Evas_List l;
|
||||
E_Dir *d;
|
||||
E_View *v;
|
||||
E_File *f;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
D_ENTER;
|
||||
|
||||
/* if we get a path - ignore it - its not a file in the dir */
|
||||
if (!file || file[0] == '/')
|
||||
D_RETURN;
|
||||
d = e_dir_find_by_monitor_id(id);
|
||||
|
||||
if (!strcmp(file, ".e_background.bg.db"))
|
||||
{
|
||||
IF_FREE(d->bg_file);
|
||||
snprintf(buf, PATH_MAX, "%s/%s", d->dir, file);
|
||||
e_strdup(d->bg_file, buf);
|
||||
snprintf(buf, PATH_MAX, "background_reload:%s", d->dir);
|
||||
ecore_add_event_timer(buf, 0.5, e_dir_bg_reload_timeout, 0, d);
|
||||
}
|
||||
/*else if ((!strcmp(".e_iconbar.db", file)) ||
|
||||
* (!strcmp(".e_iconbar.bits.db", file)))
|
||||
* {
|
||||
* snprintf(buf, PATH_MAX, "iconbar_reload:%s", m->dir);
|
||||
* ecore_add_event_timer(buf, 0.5, e_dir_ib_reload_timeout, 0, m);
|
||||
* } */
|
||||
else if (file[0] != '.')
|
||||
{
|
||||
f = e_file_new(file);
|
||||
d->files = evas_list_append(d->files, f);
|
||||
/* tell all views for this dir about the new file */
|
||||
for (l = d->views; l; l = l->next)
|
||||
{
|
||||
v = l->data;
|
||||
e_view_file_add(v, f);
|
||||
}
|
||||
}
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_dir_file_deleted(int id, char *file)
|
||||
{
|
||||
Evas_List l;
|
||||
E_File *f;
|
||||
E_Dir *d;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!file || file[0] == '/')
|
||||
D_RETURN;
|
||||
|
||||
d = e_dir_find_by_monitor_id(id);
|
||||
f = e_file_get_by_name(d->files, file);
|
||||
d->files = evas_list_remove(d->files, f);
|
||||
|
||||
if (!strcmp(file, ".e_background.bg.db"))
|
||||
{
|
||||
e_dir_set_default_background(d);
|
||||
}
|
||||
/*else if ((!strcmp(".e_iconbar.db", file)) ||
|
||||
* (!strcmp(".e_iconbar.bits.db", file)))
|
||||
* {
|
||||
* for (l = m->views; l; l = l->next)
|
||||
* {
|
||||
* E_View *v = (E_View *) l->data;
|
||||
*
|
||||
* e_object_unref(E_OBJECT(v->iconbar));
|
||||
* v->iconbar = NULL;
|
||||
* }
|
||||
* } */
|
||||
else if (file[0] != '.')
|
||||
{
|
||||
for (l = d->views; l; l = l->next)
|
||||
{
|
||||
E_View *v = (E_View *) l->data;
|
||||
|
||||
e_view_file_delete(v, f);
|
||||
}
|
||||
}
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_dir_file_changed(int id, char *file)
|
||||
{
|
||||
Evas_List l;
|
||||
E_Dir *d;
|
||||
E_File *f;
|
||||
E_View *v;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!file || file[0] == '/')
|
||||
D_RETURN;
|
||||
d = e_dir_find_by_monitor_id(id);
|
||||
f = e_file_get_by_name(d->files, file);
|
||||
if (!strcmp(file, ".e_background.bg.db"))
|
||||
{
|
||||
IF_FREE(d->bg_file);
|
||||
snprintf(buf, PATH_MAX, "%s/%s", d->dir, file);
|
||||
e_strdup(d->bg_file, buf);
|
||||
snprintf(buf, PATH_MAX, "background_reload:%s", d->dir);
|
||||
ecore_add_event_timer(buf, 0.5, e_dir_bg_reload_timeout, 0, d);
|
||||
}
|
||||
else if ((!strcmp(".e_iconbar.db", file)) ||
|
||||
(!strcmp(".e_iconbar.bits.db", file)))
|
||||
{
|
||||
snprintf(buf, PATH_MAX, "iconbar_reload:%s", d->dir);
|
||||
ecore_add_event_timer(buf, 0.5, e_dir_ib_reload_timeout, 0, d);
|
||||
}
|
||||
else if (file[0] != '.')
|
||||
{
|
||||
for (l = d->views; l; l = l->next)
|
||||
{
|
||||
v = l->data;
|
||||
e_view_file_changed(v, f);
|
||||
}
|
||||
}
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
void
|
||||
e_dir_file_moved(int id, char *file)
|
||||
{
|
||||
Evas_List l;
|
||||
E_Dir *d;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
if (!file || file[0] == '/')
|
||||
D_RETURN;
|
||||
d = e_dir_find_by_monitor_id(id);
|
||||
for (l = d->views; l; l = l->next)
|
||||
{
|
||||
E_View *v = (E_View *) l->data;
|
||||
E_Icon *ic;
|
||||
|
||||
ic = e_icon_find_by_file(v, file);
|
||||
if (ic)
|
||||
{
|
||||
}
|
||||
}
|
||||
D_RETURN;
|
||||
}
|
||||
|
||||
E_Dir *
|
||||
e_dir_find_by_monitor_id(int id)
|
||||
{
|
||||
E_Dir *d;
|
||||
Evas_List l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
for (l = VM->dirs; l; l = l->next)
|
||||
{
|
||||
d = l->data;
|
||||
if (d->monitor_id == id)
|
||||
D_RETURN_(d);
|
||||
}
|
||||
D_RETURN_(NULL);
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
#ifndef E_VIEW_MODEL_H
|
||||
#define E_VIEW_MODEL_H
|
||||
|
||||
#include "fs.h"
|
||||
#include "iconbar.h"
|
||||
#include <Evas.h>
|
||||
|
||||
#ifndef E_VIEW_TYPEDEF
|
||||
#define E_VIEW_TYPEDEF
|
||||
typedef struct _E_View E_View;
|
||||
#endif
|
||||
|
||||
#ifndef E_ICON_TYPEDEF
|
||||
#define E_ICON_TYPEDEF
|
||||
typedef struct _E_Icon E_Icon;
|
||||
#endif
|
||||
|
||||
#ifndef E_VIEW_MODEL_TYPEDEF
|
||||
#define E_VIEW_MODEL_TYPEDEF
|
||||
typedef struct _E_Dir E_Dir;
|
||||
#endif
|
||||
|
||||
struct _E_Dir
|
||||
{
|
||||
E_Object o;
|
||||
|
||||
/* The realpath of the view's directory */
|
||||
char *dir;
|
||||
|
||||
Evas_List files;
|
||||
|
||||
Evas_Object obj_bg;
|
||||
|
||||
char *bg_file;
|
||||
|
||||
E_FS_Restarter *restarter;
|
||||
|
||||
int monitor_id;
|
||||
|
||||
/* A list of all the views for which an E_Dir is sharing data */
|
||||
Evas_List views;
|
||||
|
||||
int is_desktop;
|
||||
};
|
||||
|
||||
/**
|
||||
* e_dir_set_dir - Assigns a directory to a view E_Dir
|
||||
* @ed: The view E_Dir to set the dir for
|
||||
* @dir: The directory
|
||||
*
|
||||
* Set the directory for a dir and starts monitoring it via efsd.
|
||||
*/
|
||||
void e_dir_set_dir(E_Dir * ed, char *dir);
|
||||
|
||||
E_Dir *e_dir_new(void);
|
||||
void e_dir_init(void);
|
||||
void e_dir_register_view(E_Dir * d, E_View * v);
|
||||
void e_dir_unregister_view(E_View * v);
|
||||
|
||||
E_Dir *e_dir_find_by_monitor_id(int id);
|
||||
|
||||
/* Deal with incoming file events */
|
||||
void e_dir_file_added(int id, char *file);
|
||||
void e_dir_file_deleted(int id, char *file);
|
||||
void e_dir_file_changed(int id, char *file);
|
||||
void e_dir_file_moved(int id, char *file);
|
||||
#endif
|
162
src/view.c
162
src/view.c
|
@ -554,19 +554,19 @@ e_bg_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
|||
}
|
||||
|
||||
void
|
||||
e_view_deselect_all(E_View *v)
|
||||
e_view_deselect_all(E_View * v)
|
||||
{
|
||||
Evas_List l;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
for (l = v->icons; l; l = l->next)
|
||||
{
|
||||
E_Icon *ic;
|
||||
for (l = v->icons; l; l = l->next)
|
||||
{
|
||||
E_Icon *ic;
|
||||
|
||||
ic = l->data;
|
||||
e_icon_deselect(ic);
|
||||
}
|
||||
ic = l->data;
|
||||
e_icon_deselect(ic);
|
||||
}
|
||||
|
||||
D_RETURN;
|
||||
}
|
||||
|
@ -584,7 +584,7 @@ e_view_deselect_all_except(E_Icon * not_ic)
|
|||
|
||||
ic = l->data;
|
||||
if (ic != not_ic)
|
||||
e_icon_deselect(ic);
|
||||
e_icon_deselect(ic);
|
||||
}
|
||||
|
||||
D_RETURN;
|
||||
|
@ -908,7 +908,7 @@ static void
|
|||
e_configure(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Window_Configure *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -972,17 +972,17 @@ e_configure(Ecore_Event * ev)
|
|||
if (e_view_layout_get_element_geometry(v->layout,
|
||||
"Scrollbar_H",
|
||||
&x, &y, &w, &h))
|
||||
{
|
||||
e_scrollbar_move(v->scrollbar.h, x, y);
|
||||
e_scrollbar_resize(v->scrollbar.h, w, h);
|
||||
}
|
||||
{
|
||||
e_scrollbar_move(v->scrollbar.h, x, y);
|
||||
e_scrollbar_resize(v->scrollbar.h, w, h);
|
||||
}
|
||||
if (e_view_layout_get_element_geometry(v->layout,
|
||||
"Scrollbar_V",
|
||||
&x, &y, &w, &h))
|
||||
{
|
||||
e_scrollbar_move(v->scrollbar.v, x, y);
|
||||
e_scrollbar_resize(v->scrollbar.v, w, h);
|
||||
}
|
||||
{
|
||||
e_scrollbar_move(v->scrollbar.v, x, y);
|
||||
e_scrollbar_resize(v->scrollbar.v, w, h);
|
||||
}
|
||||
}
|
||||
|
||||
e_scrollbar_move(v->scrollbar.v,
|
||||
|
@ -1005,16 +1005,16 @@ static void
|
|||
e_property(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Window_Configure *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
}
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
D_RETURN;
|
||||
|
@ -1024,15 +1024,15 @@ static void
|
|||
e_unmap(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Window_Unmap *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1043,14 +1043,14 @@ static void
|
|||
e_visibility(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Window_Unmap *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1062,14 +1062,14 @@ static void
|
|||
e_focus_in(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Window_Focus_In *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1081,14 +1081,14 @@ static void
|
|||
e_focus_out(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Window_Focus_Out *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1100,14 +1100,14 @@ static void
|
|||
e_delete(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Window_Delete *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
e_object_unref(E_OBJECT(v));
|
||||
D_RETURN;
|
||||
|
@ -1136,14 +1136,14 @@ e_dnd_status(Ecore_Event * ev)
|
|||
* int ok;
|
||||
* } Ecore_Event_Dnd_Drop_Status;
|
||||
*/
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
if (dnd_pending_mode != E_DND_DELETED &&
|
||||
dnd_pending_mode != E_DND_COPIED)
|
||||
|
@ -1172,14 +1172,14 @@ static void
|
|||
e_wheel(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Wheel *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1191,15 +1191,15 @@ static void
|
|||
e_key_down(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Key_Down *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win))
|
||||
|| (v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win))
|
||||
|| (v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
if (!strcmp(e->key, "Up"))
|
||||
{
|
||||
|
@ -1244,14 +1244,14 @@ static void
|
|||
e_key_up(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Key_Up *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@ -1263,7 +1263,7 @@ static void
|
|||
e_mouse_down(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Mouse_Down *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -1271,7 +1271,7 @@ e_mouse_down(Ecore_Event * ev)
|
|||
current_ev = ev;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
{
|
||||
int focus_mode;
|
||||
|
||||
|
@ -1294,7 +1294,7 @@ static void
|
|||
e_mouse_up(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Mouse_Up *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -1302,7 +1302,7 @@ e_mouse_up(Ecore_Event * ev)
|
|||
current_ev = ev;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
{
|
||||
evas_event_button_up(v->evas, e->x, e->y, e->button);
|
||||
current_ev = NULL;
|
||||
|
@ -1318,7 +1318,7 @@ static void
|
|||
e_mouse_move(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Mouse_Move *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -1326,7 +1326,7 @@ e_mouse_move(Ecore_Event * ev)
|
|||
current_ev = ev;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
{
|
||||
evas_event_move(v->evas, e->x, e->y);
|
||||
current_ev = NULL;
|
||||
|
@ -1342,7 +1342,7 @@ static void
|
|||
e_mouse_in(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Window_Enter *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -1350,9 +1350,9 @@ e_mouse_in(Ecore_Event * ev)
|
|||
current_ev = ev;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
{
|
||||
if (v->dir->is_desktop)
|
||||
if (v->is_desktop)
|
||||
{
|
||||
evas_event_enter(v->evas);
|
||||
}
|
||||
|
@ -1369,7 +1369,7 @@ static void
|
|||
e_mouse_out(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Window_Leave *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -1377,7 +1377,7 @@ e_mouse_out(Ecore_Event * ev)
|
|||
current_ev = ev;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
{
|
||||
evas_event_leave(v->evas);
|
||||
current_ev = NULL;
|
||||
|
@ -1393,7 +1393,7 @@ static void
|
|||
e_window_expose(Ecore_Event * ev)
|
||||
{
|
||||
Ecore_Event_Window_Expose *e;
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
|
@ -1401,7 +1401,7 @@ e_window_expose(Ecore_Event * ev)
|
|||
current_ev = ev;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_main_window(e->win)))
|
||||
{
|
||||
if (!(v->pmap))
|
||||
evas_update_rect(v->evas, e->x, e->y, e->w, e->h);
|
||||
|
@ -1590,14 +1590,13 @@ e_view_cleanup(E_View * v)
|
|||
* not via a timeout, because we will destroy the object after this.*/
|
||||
e_view_geometry_record(v);
|
||||
|
||||
|
||||
if (v->iconbar)
|
||||
{
|
||||
/*e_iconbar_save_out_final(v->iconbar); */
|
||||
e_object_unref(E_OBJECT(v->iconbar));
|
||||
}
|
||||
if (v->bg)
|
||||
e_bg_free(v->bg);
|
||||
e_bg_free(v->bg);
|
||||
if (v->scrollbar.h)
|
||||
e_object_unref(E_OBJECT(v->scrollbar.h));
|
||||
if (v->scrollbar.v)
|
||||
|
@ -1605,7 +1604,6 @@ e_view_cleanup(E_View * v)
|
|||
if (v->layout)
|
||||
e_object_unref(E_OBJECT(v->layout));
|
||||
|
||||
|
||||
ecore_window_destroy(v->win.base);
|
||||
|
||||
snprintf(name, PATH_MAX, "resort_timer.%s", v->name);
|
||||
|
@ -1717,7 +1715,7 @@ e_view_set_dir(E_View * v, char *path, int is_desktop)
|
|||
|
||||
if (d)
|
||||
{
|
||||
e_dir_register_view(d, v);
|
||||
e_dir_register_view(d, v);
|
||||
/* FIXME do a real naming scheme here */
|
||||
snprintf(buf, PATH_MAX, "%s:%d", v->dir->dir,
|
||||
e_object_get_usecount(E_OBJECT(v->dir)));
|
||||
|
@ -1810,12 +1808,12 @@ e_view_realize(E_View * v)
|
|||
|
||||
if (e_view_layout_get_element_geometry(v->layout, "Icons",
|
||||
&x, &y, &w, &h))
|
||||
{
|
||||
v->spacing.window.l = x;
|
||||
v->spacing.window.r = v->size.w - (x + w);
|
||||
v->spacing.window.t = y;
|
||||
v->spacing.window.b = v->size.h - (y + h);
|
||||
}
|
||||
{
|
||||
v->spacing.window.l = x;
|
||||
v->spacing.window.r = v->size.w - (x + w);
|
||||
v->spacing.window.t = y;
|
||||
v->spacing.window.b = v->size.h - (y + h);
|
||||
}
|
||||
}
|
||||
|
||||
v->scrollbar.v = e_scrollbar_new(v);
|
||||
|
@ -1841,17 +1839,17 @@ e_view_realize(E_View * v)
|
|||
|
||||
if (e_view_layout_get_element_geometry(v->layout, "Scrollbar_H",
|
||||
&x, &y, &w, &h))
|
||||
{
|
||||
e_scrollbar_move(v->scrollbar.h, x, y);
|
||||
e_scrollbar_resize(v->scrollbar.h, w, h);
|
||||
}
|
||||
{
|
||||
e_scrollbar_move(v->scrollbar.h, x, y);
|
||||
e_scrollbar_resize(v->scrollbar.h, w, h);
|
||||
}
|
||||
|
||||
if (e_view_layout_get_element_geometry(v->layout, "Scrollbar_V",
|
||||
&x, &y, &w, &h))
|
||||
{
|
||||
e_scrollbar_move(v->scrollbar.v, x, y);
|
||||
e_scrollbar_resize(v->scrollbar.v, w, h);
|
||||
}
|
||||
{
|
||||
e_scrollbar_move(v->scrollbar.v, x, y);
|
||||
e_scrollbar_resize(v->scrollbar.v, w, h);
|
||||
}
|
||||
}
|
||||
|
||||
/* I support dnd */
|
||||
|
@ -2195,7 +2193,7 @@ e_dnd_data_request(Ecore_Event * ev)
|
|||
*/
|
||||
e = ev->event;
|
||||
if (!(v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
D_RETURN;
|
||||
D_RETURN;
|
||||
|
||||
if (e->uri_list)
|
||||
{
|
||||
|
@ -2306,14 +2304,14 @@ e_dnd_drop_end(Ecore_Event * ev)
|
|||
* * Window win, root, source_win;
|
||||
* * } Ecore_Event_Dnd_Drop_End;
|
||||
*/
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
if (v_dnd_source)
|
||||
{
|
||||
|
@ -2350,14 +2348,14 @@ e_dnd_drop_position(Ecore_Event * ev)
|
|||
* int x, y;
|
||||
* } Ecore_Event_Dnd_Drop_Position;
|
||||
*/
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
if (v->iconbar)
|
||||
{
|
||||
|
@ -2400,14 +2398,14 @@ e_dnd_drop(Ecore_Event * ev)
|
|||
* Window win, root, source_win;
|
||||
* } Ecore_Event_Dnd_Drop;
|
||||
*/
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
/* Dropped! Handle data */
|
||||
/* Same view or same underlying dir? Mark to skip action */
|
||||
|
@ -2438,14 +2436,14 @@ e_dnd_drop_request(Ecore_Event * ev)
|
|||
* int copy, link, move;
|
||||
* } Ecore_Event_Dnd_Drop_Request;
|
||||
*/
|
||||
E_View *v;
|
||||
E_View *v;
|
||||
|
||||
D_ENTER;
|
||||
|
||||
e = ev->event;
|
||||
if (e && e->win)
|
||||
{
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
if ((v = e_view_machine_get_view_by_base_window(e->win)))
|
||||
{
|
||||
/* if it exists, we already have the data... */
|
||||
if ((!dnd_files) && (e->num_files > 0))
|
||||
|
@ -2462,7 +2460,7 @@ e_dnd_drop_request(Ecore_Event * ev)
|
|||
|
||||
/* if the dnd source is e itself then dont use the event mode */
|
||||
if ((v ==
|
||||
e_view_machine_get_view_by_base_window(e->source_win)))
|
||||
e_view_machine_get_view_by_base_window(e->source_win)))
|
||||
{
|
||||
dnd_pending_mode = v->drag.drop_mode;
|
||||
}
|
||||
|
|
|
@ -212,6 +212,8 @@ struct _E_View
|
|||
scrollbar;
|
||||
|
||||
int is_listing;
|
||||
|
||||
int is_desktop;
|
||||
|
||||
E_Iconbar *iconbar;
|
||||
|
||||
|
|
Loading…
Reference in New Issue