forked from enlightenment/enlightenment
use cp -dpR instead of -ar (it seems bsd doesnt like -a).
add abstraction for recording view geometry metadata, put geometry recording on a self-resetting timeout so efsd doesnt thrash the disk whenever you move or resize windows. clean out some unused code. SVN revision: 5026
This commit is contained in:
parent
bd45e5475d
commit
fc25a6f20d
|
@ -12,7 +12,7 @@ install-data-local:
|
||||||
if test -d $(srcdir)/data; then \
|
if test -d $(srcdir)/data; then \
|
||||||
$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/data; \
|
$(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/data; \
|
||||||
for d in $(srcdir)/data/*; do \
|
for d in $(srcdir)/data/*; do \
|
||||||
cp -afr $$d $(DESTDIR)$(pkgdatadir)/data; \
|
cp -dpRf $$d $(DESTDIR)$(pkgdatadir)/data; \
|
||||||
done \
|
done \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ dist-hook:
|
||||||
if test -d data; then \
|
if test -d data; then \
|
||||||
mkdir $(distdir)/data; \
|
mkdir $(distdir)/data; \
|
||||||
for d in data/*; do \
|
for d in data/*; do \
|
||||||
cp -ar $$d $(distdir)/data; \
|
cp -dpR $$d $(distdir)/data; \
|
||||||
done \
|
done \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -25,6 +25,7 @@ enlightenment_SOURCES = \
|
||||||
pack.c \
|
pack.c \
|
||||||
resist.h resist.c \
|
resist.h resist.c \
|
||||||
shelf.c \
|
shelf.c \
|
||||||
|
text.h text.c \
|
||||||
util.h util.c \
|
util.h util.c \
|
||||||
view.h view.c \
|
view.h view.c \
|
||||||
e.h
|
e.h
|
||||||
|
|
|
@ -0,0 +1,49 @@
|
||||||
|
#include "text.h"
|
||||||
|
|
||||||
|
E_Text *
|
||||||
|
e_text_new(Evas evas, char *text, char *class)
|
||||||
|
{
|
||||||
|
E_Text *t;
|
||||||
|
|
||||||
|
t = NEW(E_Text, 1);
|
||||||
|
ZERO(t, E_Text, 1);
|
||||||
|
t->state = strdup("normal");
|
||||||
|
if (class) t->class = strdup(class);
|
||||||
|
else t->class = strdup("");
|
||||||
|
if (text) t->text = strdup(text);
|
||||||
|
else t->text = strdup("");
|
||||||
|
t->evas = evas;
|
||||||
|
t->obj = evas_add_text(t->evas, "borzoib", 8, t->text);
|
||||||
|
evas_set_color(t->evas, t->obj, 0, 0, 0, 255);
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
void e_text_free(E_Text *t)
|
||||||
|
{
|
||||||
|
IF_FREE(t->state);
|
||||||
|
IF_FREE(t->class);
|
||||||
|
IF_FREE(t->text);
|
||||||
|
|
||||||
|
if ((t->evas) && (t->obj))
|
||||||
|
{
|
||||||
|
evas_del_object(t->evas, t->obj);
|
||||||
|
}
|
||||||
|
FREE(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
void e_text_set_text(E_Text *t){}
|
||||||
|
void e_text_set_layer(E_Text *t, int l){}
|
||||||
|
void e_text_set_clip(E_Text *t, Evas_Object clip){}
|
||||||
|
void e_text_unset_clip(E_Text *t){}
|
||||||
|
void e_text_raise(E_Text *t){}
|
||||||
|
void e_text_lower(E_Text *t){}
|
||||||
|
void e_text_show(E_Text *t){}
|
||||||
|
void e_text_hide(E_Text *t){}
|
||||||
|
void e_text_set_color(E_Text *t, int r, int g, int b, int a){}
|
||||||
|
void e_text_move(E_Text *t, double x, double y){}
|
||||||
|
void e_text_resize(E_Text *t, double w, double h){}
|
||||||
|
void e_text_get_geometry(E_Text *t, double *x, double *y, double *w, double *h){}
|
||||||
|
void e_text_get_min_size(E_Text *t, double *w, double *h){}
|
||||||
|
void e_text_get_max_size(E_Text *t, double *w, double *h){}
|
||||||
|
void e_text_set_state(E_Text *t, char *state){}
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
#ifndef E_TEXT_H
|
||||||
|
#define E_TEXT_H
|
||||||
|
|
||||||
|
#include "e.h"
|
||||||
|
|
||||||
|
typedef struct _E_Text E_Text;
|
||||||
|
|
||||||
|
struct _E_Text
|
||||||
|
{
|
||||||
|
char *text;
|
||||||
|
char *class;
|
||||||
|
char *state;
|
||||||
|
|
||||||
|
int visible;
|
||||||
|
double x, y, w, h;
|
||||||
|
struct {
|
||||||
|
double w, h;
|
||||||
|
} min, max;
|
||||||
|
struct {
|
||||||
|
int r, g, b, a;
|
||||||
|
} color;
|
||||||
|
int layer;
|
||||||
|
|
||||||
|
Evas evas;
|
||||||
|
Evas_Object obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
E_Text *e_text_new(Evas evas, char *text, char *class);
|
||||||
|
void e_text_free(E_Text *t);
|
||||||
|
void e_text_set_text(E_Text *t);
|
||||||
|
void e_text_set_layer(E_Text *t, int l);
|
||||||
|
void e_text_set_clip(E_Text *t, Evas_Object clip);
|
||||||
|
void e_text_unset_clip(E_Text *t);
|
||||||
|
void e_text_raise(E_Text *t);
|
||||||
|
void e_text_lower(E_Text *t);
|
||||||
|
void e_text_show(E_Text *t);
|
||||||
|
void e_text_hide(E_Text *t);
|
||||||
|
void e_text_set_color(E_Text *t, int r, int g, int b, int a);
|
||||||
|
void e_text_move(E_Text *t, double x, double y);
|
||||||
|
void e_text_resize(E_Text *t, double w, double h);
|
||||||
|
void e_text_get_geometry(E_Text *t, double *x, double *y, double *w, double *h);
|
||||||
|
void e_text_get_min_size(E_Text *t, double *w, double *h);
|
||||||
|
void e_text_get_max_size(E_Text *t, double *w, double *h);
|
||||||
|
void e_text_set_state(E_Text *t, char *state);
|
||||||
|
|
||||||
|
#endif
|
133
src/view.c
133
src/view.c
|
@ -43,6 +43,7 @@ static void e_view_handle_fs(EfsdEvent *ev);
|
||||||
static void e_view_handle_fs_restart(void *data);
|
static void e_view_handle_fs_restart(void *data);
|
||||||
static void e_view_resort_timeout(int val, void *data);
|
static void e_view_resort_timeout(int val, void *data);
|
||||||
static int e_view_restart_alphabetical_qsort_cb(const void *data1, const void *data2);
|
static int e_view_restart_alphabetical_qsort_cb(const void *data1, const void *data2);
|
||||||
|
static void e_view_geometry_record_timeout(int val, void *data);
|
||||||
|
|
||||||
void
|
void
|
||||||
e_view_selection_update(E_View *v)
|
e_view_selection_update(E_View *v)
|
||||||
|
@ -293,7 +294,6 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* errr. select files in box */
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -721,7 +721,6 @@ e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||||
{
|
{
|
||||||
if ((ic->state.selected) && (!ic->state.just_selected))
|
if ((ic->state.selected) && (!ic->state.just_selected))
|
||||||
e_view_icon_deselect(ic);
|
e_view_icon_deselect(ic);
|
||||||
/* e_view_icon_invert_selection(ic);*/
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -800,7 +799,6 @@ e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e_window_get_geometry(0, NULL, NULL, &rw, &rh);
|
e_window_get_geometry(0, NULL, NULL, &rw, &rh);
|
||||||
printf("%i %i\n", ic->view->location.x, ic->view->location.y);
|
|
||||||
downx = ic->view->select.down.x + ic->view->location.x;
|
downx = ic->view->select.down.x + ic->view->location.x;
|
||||||
downy = ic->view->select.down.y + ic->view->location.y;
|
downy = ic->view->select.down.y + ic->view->location.y;
|
||||||
|
|
||||||
|
@ -833,16 +831,6 @@ e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||||
ic->view->drag.win = e_window_override_new(0, wx, wy, ww, wh);
|
ic->view->drag.win = e_window_override_new(0, wx, wy, ww, wh);
|
||||||
pmap = e_pixmap_new(ic->view->drag.win, ww, wh, 0);
|
pmap = e_pixmap_new(ic->view->drag.win, ww, wh, 0);
|
||||||
mask = e_pixmap_new(ic->view->drag.win, ww, wh, 1);
|
mask = e_pixmap_new(ic->view->drag.win, ww, wh, 1);
|
||||||
#if 0
|
|
||||||
{
|
|
||||||
GC gc;
|
|
||||||
|
|
||||||
gc = e_gc_new(mask);
|
|
||||||
e_gc_set_fg(gc, 0);
|
|
||||||
e_fill_rectangle(mask, gc, 0, 0, ww, wh);
|
|
||||||
e_gc_free(gc);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
Imlib_Image im;
|
Imlib_Image im;
|
||||||
|
|
||||||
|
@ -924,39 +912,6 @@ e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
|
||||||
imlib_context_set_mask(mask);
|
imlib_context_set_mask(mask);
|
||||||
imlib_context_set_blend(0);
|
imlib_context_set_blend(0);
|
||||||
imlib_render_image_on_drawable(0, 0);
|
imlib_render_image_on_drawable(0, 0);
|
||||||
#if 0
|
|
||||||
for (l = views; l; l = l->next)
|
|
||||||
{
|
|
||||||
E_View *v;
|
|
||||||
Evas_List ll;
|
|
||||||
|
|
||||||
v = l->data;
|
|
||||||
if (v->sel_count > 0)
|
|
||||||
{
|
|
||||||
for (ll = v->icons; ll; ll = ll->next)
|
|
||||||
{
|
|
||||||
E_Icon *ic;
|
|
||||||
|
|
||||||
ic = ll->data;
|
|
||||||
if (ic->state.selected)
|
|
||||||
{
|
|
||||||
double ix, iy, iw, ih;
|
|
||||||
int icx, icy, icw, ich;
|
|
||||||
|
|
||||||
evas_get_geometry(ic->view->evas,
|
|
||||||
ic->obj.icon,
|
|
||||||
&ix, &iy, &iw, &ih);
|
|
||||||
icx = ix + v->location.x - wx;
|
|
||||||
icy = iy + v->location.y - wy;
|
|
||||||
icw = iw;
|
|
||||||
ich = ih;
|
|
||||||
imlib_render_image_part_on_drawable_at_size(0, 0, icw, ich,
|
|
||||||
icx, icy, icw, ich);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
imlib_free_image();
|
imlib_free_image();
|
||||||
}
|
}
|
||||||
e_window_set_background_pixmap(ic->view->drag.win, pmap);
|
e_window_set_background_pixmap(ic->view->drag.win, pmap);
|
||||||
|
@ -1001,8 +956,51 @@ e_idle(void *data)
|
||||||
UN(data);
|
UN(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
void
|
||||||
void e_configure(Eevent * ev)
|
e_view_geometry_record(E_View *v)
|
||||||
|
{
|
||||||
|
if (e_fs_get_connection())
|
||||||
|
{
|
||||||
|
int left, top;
|
||||||
|
|
||||||
|
e_window_get_frame_size(v->win.base, &left, NULL,
|
||||||
|
&top, NULL);
|
||||||
|
efsd_set_metadata_int(e_fs_get_connection(),
|
||||||
|
"/view/x", v->dir,
|
||||||
|
v->location.x - left);
|
||||||
|
efsd_set_metadata_int(e_fs_get_connection(),
|
||||||
|
"/view/y", v->dir,
|
||||||
|
v->location.y - top);
|
||||||
|
efsd_set_metadata_int(e_fs_get_connection(),
|
||||||
|
"/view/w", v->dir,
|
||||||
|
v->size.w);
|
||||||
|
efsd_set_metadata_int(e_fs_get_connection(),
|
||||||
|
"/view/h", v->dir,
|
||||||
|
v->size.h);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
e_view_geometry_record_timeout(int val, void *data)
|
||||||
|
{
|
||||||
|
E_View *v;
|
||||||
|
|
||||||
|
v = data;
|
||||||
|
e_view_geometry_record(v);
|
||||||
|
UN(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
e_view_queue_geometry_record(E_View *v)
|
||||||
|
{
|
||||||
|
char name[4096];
|
||||||
|
|
||||||
|
sprintf(name, "geometry_record.%s", v->dir);
|
||||||
|
e_add_event_timer(name, 0.10, e_view_geometry_record_timeout, 0, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
e_configure(Eevent * ev)
|
||||||
{
|
{
|
||||||
Ev_Window_Configure *e;
|
Ev_Window_Configure *e;
|
||||||
Evas_List l;
|
Evas_List l;
|
||||||
|
@ -1022,19 +1020,7 @@ void e_configure(Eevent * ev)
|
||||||
{
|
{
|
||||||
v->location.x = e->x;
|
v->location.x = e->x;
|
||||||
v->location.y = e->y;
|
v->location.y = e->y;
|
||||||
if (e_fs_get_connection())
|
e_view_queue_geometry_record(v);
|
||||||
{
|
|
||||||
int left, top;
|
|
||||||
|
|
||||||
e_window_get_frame_size(v->win.base, &left, NULL,
|
|
||||||
&top, NULL);
|
|
||||||
efsd_set_metadata_int(e_fs_get_connection(),
|
|
||||||
"/view/x", v->dir,
|
|
||||||
v->location.x - left);
|
|
||||||
efsd_set_metadata_int(e_fs_get_connection(),
|
|
||||||
"/view/y", v->dir,
|
|
||||||
v->location.y - top);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((e->w != v->size.w) || (e->h != v->size.h))
|
if ((e->w != v->size.w) || (e->h != v->size.h))
|
||||||
|
@ -1060,15 +1046,7 @@ void e_configure(Eevent * ev)
|
||||||
evas_set_output_viewport(v->evas, 0, 0, v->size.w, v->size.h);
|
evas_set_output_viewport(v->evas, 0, 0, v->size.w, v->size.h);
|
||||||
evas_set_output_size(v->evas, v->size.w, v->size.h);
|
evas_set_output_size(v->evas, v->size.w, v->size.h);
|
||||||
e_view_arrange(v);
|
e_view_arrange(v);
|
||||||
if (e_fs_get_connection())
|
e_view_queue_geometry_record(v);
|
||||||
{
|
|
||||||
efsd_set_metadata_int(e_fs_get_connection(),
|
|
||||||
"/view/w", v->dir,
|
|
||||||
v->size.w);
|
|
||||||
efsd_set_metadata_int(e_fs_get_connection(),
|
|
||||||
"/view/h", v->dir,
|
|
||||||
v->size.h);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1227,9 +1205,11 @@ e_key_down(Eevent * ev)
|
||||||
}
|
}
|
||||||
else if (!strcmp(e->key, "Left"))
|
else if (!strcmp(e->key, "Left"))
|
||||||
{
|
{
|
||||||
|
e_view_scroll_by(v, 8, 0);
|
||||||
}
|
}
|
||||||
else if (!strcmp(e->key, "Right"))
|
else if (!strcmp(e->key, "Right"))
|
||||||
{
|
{
|
||||||
|
e_view_scroll_by(v, 0, 8);
|
||||||
}
|
}
|
||||||
else if (!strcmp(e->key, "Escape"))
|
else if (!strcmp(e->key, "Escape"))
|
||||||
{
|
{
|
||||||
|
@ -1917,6 +1897,8 @@ e_view_free(E_View *v)
|
||||||
|
|
||||||
sprintf(name, "resort_timer.%s", v->dir);
|
sprintf(name, "resort_timer.%s", v->dir);
|
||||||
e_del_event_timer(name);
|
e_del_event_timer(name);
|
||||||
|
sprintf(name, "geometry_record.%s", v->dir);
|
||||||
|
e_del_event_timer(name);
|
||||||
|
|
||||||
views = evas_list_remove(views, v);
|
views = evas_list_remove(views, v);
|
||||||
efsd_stop_monitor(e_fs_get_connection(), v->dir, TRUE);
|
efsd_stop_monitor(e_fs_get_connection(), v->dir, TRUE);
|
||||||
|
@ -2312,7 +2294,6 @@ e_view_handle_fs(EfsdEvent *ev)
|
||||||
if (v->is_desktop) continue;
|
if (v->is_desktop) continue;
|
||||||
if (v->geom_get.x == cmd)
|
if (v->geom_get.x == cmd)
|
||||||
{
|
{
|
||||||
printf("Got X\n");
|
|
||||||
v->geom_get.x = 0;
|
v->geom_get.x = 0;
|
||||||
if (efsd_metadata_get_type(ev) == EFSD_INT)
|
if (efsd_metadata_get_type(ev) == EFSD_INT)
|
||||||
{
|
{
|
||||||
|
@ -2321,7 +2302,6 @@ e_view_handle_fs(EfsdEvent *ev)
|
||||||
if (efsd_metadata_get_int(ev,
|
if (efsd_metadata_get_int(ev,
|
||||||
&(v->location.x)))
|
&(v->location.x)))
|
||||||
{
|
{
|
||||||
printf("mov x\n");
|
|
||||||
e_window_move(v->win.base,
|
e_window_move(v->win.base,
|
||||||
v->location.x,
|
v->location.x,
|
||||||
v->location.y);
|
v->location.y);
|
||||||
|
@ -2335,7 +2315,6 @@ e_view_handle_fs(EfsdEvent *ev)
|
||||||
}
|
}
|
||||||
else if (v->geom_get.y == cmd)
|
else if (v->geom_get.y == cmd)
|
||||||
{
|
{
|
||||||
printf("Got Y\n");
|
|
||||||
v->geom_get.y = 0;
|
v->geom_get.y = 0;
|
||||||
if (efsd_metadata_get_type(ev) == EFSD_INT)
|
if (efsd_metadata_get_type(ev) == EFSD_INT)
|
||||||
{
|
{
|
||||||
|
@ -2344,7 +2323,6 @@ e_view_handle_fs(EfsdEvent *ev)
|
||||||
if (efsd_metadata_get_int(ev,
|
if (efsd_metadata_get_int(ev,
|
||||||
&(v->location.y)))
|
&(v->location.y)))
|
||||||
{
|
{
|
||||||
printf("mov y\n");
|
|
||||||
e_window_move(v->win.base,
|
e_window_move(v->win.base,
|
||||||
v->location.x,
|
v->location.x,
|
||||||
v->location.y);
|
v->location.y);
|
||||||
|
@ -2358,7 +2336,6 @@ e_view_handle_fs(EfsdEvent *ev)
|
||||||
}
|
}
|
||||||
else if (v->geom_get.w == cmd)
|
else if (v->geom_get.w == cmd)
|
||||||
{
|
{
|
||||||
printf("Got W\n");
|
|
||||||
v->geom_get.w = 0;
|
v->geom_get.w = 0;
|
||||||
if (efsd_metadata_get_type(ev) == EFSD_INT)
|
if (efsd_metadata_get_type(ev) == EFSD_INT)
|
||||||
{
|
{
|
||||||
|
@ -2375,7 +2352,6 @@ e_view_handle_fs(EfsdEvent *ev)
|
||||||
}
|
}
|
||||||
else if (v->geom_get.h == cmd)
|
else if (v->geom_get.h == cmd)
|
||||||
{
|
{
|
||||||
printf("Got H\n");
|
|
||||||
v->geom_get.h = 0;
|
v->geom_get.h = 0;
|
||||||
if (efsd_metadata_get_type(ev) == EFSD_INT)
|
if (efsd_metadata_get_type(ev) == EFSD_INT)
|
||||||
{
|
{
|
||||||
|
@ -2401,10 +2377,7 @@ e_view_handle_fs(EfsdEvent *ev)
|
||||||
E_Border *b;
|
E_Border *b;
|
||||||
|
|
||||||
v->geom_get.busy = 0;
|
v->geom_get.busy = 0;
|
||||||
printf("ok.. adopt!\n");
|
e_background_set_size(v->bg, v->size.w, v->size.h);
|
||||||
printf("at %i %i, %ix%i\n",
|
|
||||||
v->location.x, v->location.y,
|
|
||||||
v->size.w, v->size.h);
|
|
||||||
if (v->options.back_pixmap) e_view_update(v);
|
if (v->options.back_pixmap) e_view_update(v);
|
||||||
b = e_border_adopt(v->win.base, 1);
|
b = e_border_adopt(v->win.base, 1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -199,6 +199,8 @@ void e_view_icon_apply_xy(E_Icon *ic);
|
||||||
void e_view_resort_alphabetical(E_View *v);
|
void e_view_resort_alphabetical(E_View *v);
|
||||||
void e_view_arrange(E_View *v);
|
void e_view_arrange(E_View *v);
|
||||||
void e_view_resort(E_View *v);
|
void e_view_resort(E_View *v);
|
||||||
|
void e_view_queue_geometry_record(E_View *v);
|
||||||
|
void e_view_geometry_record(E_View *v);
|
||||||
void e_view_queue_resort(E_View *v);
|
void e_view_queue_resort(E_View *v);
|
||||||
void e_view_file_added(int id, char *file);
|
void e_view_file_added(int id, char *file);
|
||||||
void e_view_file_deleted(int id, char *file);
|
void e_view_file_deleted(int id, char *file);
|
||||||
|
|
Loading…
Reference in New Issue