diff --git a/Makefile.am b/Makefile.am index a80ebd0a6..fa972a8ad 100644 --- a/Makefile.am +++ b/Makefile.am @@ -12,7 +12,7 @@ install-data-local: if test -d $(srcdir)/data; then \ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/data; \ for d in $(srcdir)/data/*; do \ - cp -afr $$d $(DESTDIR)$(pkgdatadir)/data; \ + cp -dpRf $$d $(DESTDIR)$(pkgdatadir)/data; \ done \ fi @@ -20,7 +20,7 @@ dist-hook: if test -d data; then \ mkdir $(distdir)/data; \ for d in data/*; do \ - cp -ar $$d $(distdir)/data; \ + cp -dpR $$d $(distdir)/data; \ done \ fi diff --git a/data/backgrounds/view.bg.db b/data/backgrounds/view.bg.db index 1eb059de4..ed3efa86f 100644 Binary files a/data/backgrounds/view.bg.db and b/data/backgrounds/view.bg.db differ diff --git a/src/Makefile.am b/src/Makefile.am index 2803fa83f..be9bd6bd8 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -25,6 +25,7 @@ enlightenment_SOURCES = \ pack.c \ resist.h resist.c \ shelf.c \ + text.h text.c \ util.h util.c \ view.h view.c \ e.h diff --git a/src/text.c b/src/text.c new file mode 100644 index 000000000..dd3e1604b --- /dev/null +++ b/src/text.c @@ -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){} + diff --git a/src/text.h b/src/text.h new file mode 100644 index 000000000..6dd1913c1 --- /dev/null +++ b/src/text.h @@ -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 diff --git a/src/view.c b/src/view.c index 29d778b07..a7c0fa66c 100644 --- a/src/view.c +++ b/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_resort_timeout(int val, void *data); 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 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 { @@ -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)) e_view_icon_deselect(ic); -/* e_view_icon_invert_selection(ic);*/ } 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); - printf("%i %i\n", ic->view->location.x, ic->view->location.y); downx = ic->view->select.down.x + ic->view->location.x; 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); pmap = e_pixmap_new(ic->view->drag.win, ww, wh, 0); 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; @@ -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_blend(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(); } e_window_set_background_pixmap(ic->view->drag.win, pmap); @@ -1001,8 +956,51 @@ e_idle(void *data) UN(data); } -static -void e_configure(Eevent * ev) +void +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; Evas_List l; @@ -1022,19 +1020,7 @@ void e_configure(Eevent * ev) { v->location.x = e->x; v->location.y = e->y; - 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); - } + e_view_queue_geometry_record(v); } } 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_size(v->evas, v->size.w, v->size.h); e_view_arrange(v); - if (e_fs_get_connection()) - { - 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); - } + e_view_queue_geometry_record(v); } } } @@ -1227,9 +1205,11 @@ e_key_down(Eevent * ev) } else if (!strcmp(e->key, "Left")) { + e_view_scroll_by(v, 8, 0); } else if (!strcmp(e->key, "Right")) { + e_view_scroll_by(v, 0, 8); } else if (!strcmp(e->key, "Escape")) { @@ -1917,6 +1897,8 @@ e_view_free(E_View *v) sprintf(name, "resort_timer.%s", v->dir); e_del_event_timer(name); + sprintf(name, "geometry_record.%s", v->dir); + e_del_event_timer(name); views = evas_list_remove(views, v); 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->geom_get.x == cmd) { - printf("Got X\n"); v->geom_get.x = 0; if (efsd_metadata_get_type(ev) == EFSD_INT) { @@ -2321,7 +2302,6 @@ e_view_handle_fs(EfsdEvent *ev) if (efsd_metadata_get_int(ev, &(v->location.x))) { - printf("mov x\n"); e_window_move(v->win.base, v->location.x, v->location.y); @@ -2335,7 +2315,6 @@ e_view_handle_fs(EfsdEvent *ev) } else if (v->geom_get.y == cmd) { - printf("Got Y\n"); v->geom_get.y = 0; if (efsd_metadata_get_type(ev) == EFSD_INT) { @@ -2344,7 +2323,6 @@ e_view_handle_fs(EfsdEvent *ev) if (efsd_metadata_get_int(ev, &(v->location.y))) { - printf("mov y\n"); e_window_move(v->win.base, v->location.x, v->location.y); @@ -2358,7 +2336,6 @@ e_view_handle_fs(EfsdEvent *ev) } else if (v->geom_get.w == cmd) { - printf("Got W\n"); v->geom_get.w = 0; 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) { - printf("Got H\n"); v->geom_get.h = 0; if (efsd_metadata_get_type(ev) == EFSD_INT) { @@ -2401,10 +2377,7 @@ e_view_handle_fs(EfsdEvent *ev) E_Border *b; v->geom_get.busy = 0; - printf("ok.. adopt!\n"); - printf("at %i %i, %ix%i\n", - v->location.x, v->location.y, - v->size.w, v->size.h); + e_background_set_size(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); } diff --git a/src/view.h b/src/view.h index 24c4de3de..5c3f47fe9 100644 --- a/src/view.h +++ b/src/view.h @@ -199,6 +199,8 @@ void e_view_icon_apply_xy(E_Icon *ic); void e_view_resort_alphabetical(E_View *v); void e_view_arrange(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_file_added(int id, char *file); void e_view_file_deleted(int id, char *file);