annoyances--: do not place desktop icons under shelves.
authorGustavo Sverzut Barbieri <barbieri@gmail.com>
Fri, 4 Jun 2010 01:12:04 +0000 (01:12 +0000)
committerGustavo Sverzut Barbieri <barbieri@gmail.com>
Fri, 4 Jun 2010 01:12:04 +0000 (01:12 +0000)
The new trend these days seems to be "place a shelf on top of the
screen", in that case your desktop icons will get under that shelf and
looks annoying, people laugh at E users that use that :-D (fortunately
I'm the one that usually laugh...)

Fixed, but possible other places to be fixed as well. If one wants to
avoid the shelves, use the e_zone_useful_geometry_get().

e_zone now emits E_EVENT_ZONE_MOVE_RESIZE when the useful geometry
becomes dirty. Maybe it is worth to add a new signal, but I'm reusing
it until someone complains.

SVN revision: 49431

src/bin/e_zone.c
src/modules/fileman/e_fwin.c

index 7c69014..1f05a54 100644 (file)
@@ -1005,9 +1005,16 @@ e_zone_useful_geometry_get(E_Zone *zone, int *x, int *y, int *w, int *h)
 EAPI void
 e_zone_useful_geometry_dirty(E_Zone *zone)
 {
+   E_Event_Zone_Move_Resize *ev;
+
    E_OBJECT_CHECK(zone);
    E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
 
+   ev = E_NEW(E_Event_Zone_Move_Resize, 1);
+   ev->zone = zone;
+   e_object_ref(E_OBJECT(ev->zone));
+   ecore_event_add(E_EVENT_ZONE_MOVE_RESIZE, ev, _e_zone_event_move_resize_free, NULL);
+
    zone->useful_geometry.dirty = 1;
    zone->useful_geometry.x = -1;
    zone->useful_geometry.y = -1;
index 1dd47da..70a8729 100644 (file)
@@ -179,6 +179,7 @@ e_fwin_zone_new(E_Zone *zone, const char *dev, const char *path)
    E_Fwin *fwin;
    E_Fwin_Page *page;
    Evas_Object *o;
+   int x, y, w, h;
 
    fwin = E_OBJECT_ALLOC(E_Fwin, E_FWIN_TYPE, _e_fwin_free);
    if (!fwin) return;
@@ -249,8 +250,10 @@ e_fwin_zone_new(E_Zone *zone, const char *dev, const char *path)
                                _e_fwin_pan_child_size_get);
    evas_object_propagate_events_set(page->fm_obj, 0);
    page->scrollframe_obj = o;
-   evas_object_move(o, fwin->zone->x, fwin->zone->y);
-   evas_object_resize(o, fwin->zone->w, fwin->zone->h);
+
+   e_zone_useful_geometry_get(zone, &x, &y, &w, &h);
+   evas_object_move(o, x, y);
+   evas_object_resize(o, w, h);
    evas_object_show(o);
 
    e_fm2_window_object_set(page->fm_obj, E_OBJECT(fwin->zone));
@@ -1375,8 +1378,10 @@ _e_fwin_zone_move_resize(void *data, int type, void *event)
      }
    if (fwin->cur_page->scrollframe_obj) 
      {
-       evas_object_move(fwin->cur_page->scrollframe_obj, ev->zone->x, ev->zone->y);
-       evas_object_resize(fwin->cur_page->scrollframe_obj, ev->zone->w, ev->zone->h);
+       int x, y, w, h;
+       e_zone_useful_geometry_get(ev->zone, &x, &y, &w, &h);
+       evas_object_move(fwin->cur_page->scrollframe_obj, x, y);
+       evas_object_resize(fwin->cur_page->scrollframe_obj, w, h);
      }
    return 1;
 }