add event rect for deskmirror in pager/taskbar modes
authorMike Blumenkrantz <zmike@osg.samsung.com>
Mon, 17 Aug 2015 18:52:58 +0000 (14:52 -0400)
committerMike Blumenkrantz <zmike@osg.samsung.com>
Mon, 17 Aug 2015 18:56:17 +0000 (14:56 -0400)
ensures that events are properly triggered and consumed when this
widget is clicked on

fix T2645

src/bin/e_deskmirror.c

index 7fb0cc5..7fda046 100644 (file)
@@ -15,6 +15,7 @@ typedef struct E_Smart_Data
    Evas_Object *clip;
    Evas_Object *bgpreview;
    Evas_Object *layout;
+   Evas_Object *events;
    Eina_Inlist *mirrors;
    Eina_Hash *mirror_hash;
 
@@ -114,6 +115,8 @@ _e_deskmirror_smart_reconfigure(E_Smart_Data *sd)
    evas_object_move(sd->clip, sd->x, sd->y);
    evas_object_move(sd->bgpreview, sd->x, sd->y);
    evas_object_move(sd->layout, sd->x, sd->y);
+   if (sd->events)
+     evas_object_move(sd->events, sd->x, sd->y);
 
    if (sd->resize)
      {
@@ -122,6 +125,8 @@ _e_deskmirror_smart_reconfigure(E_Smart_Data *sd)
         evas_object_resize(sd->clip, sd->w, sd->h);
         evas_object_resize(sd->bgpreview, sd->w, sd->h);
         evas_object_resize(sd->layout, sd->w, sd->h);
+        if (sd->events)
+          evas_object_resize(sd->events, sd->w, sd->h);
         EINA_INLIST_FOREACH(sd->mirrors, m)
           _mirror_scale_set(m, (float)sd->h / (float)sd->desk->zone->h);
      }
@@ -162,6 +167,7 @@ _e_deskmirror_smart_del(Evas_Object *obj)
    evas_object_del(sd->clip);
    evas_object_del(sd->bgpreview);
    evas_object_del(sd->layout);
+   evas_object_del(sd->events);
    free(sd);
 }
 
@@ -727,6 +733,14 @@ e_deskmirror_add(E_Desk *desk, Eina_Bool pager, Eina_Bool taskbar)
    sd->desk = desk;
    sd->mirror_hash = eina_hash_pointer_new((Eina_Free_Cb)_e_deskmirror_mirror_del_hash);
    sd->desk_delfn = e_object_delfn_add(E_OBJECT(desk), (Ecore_End_Cb)_e_deskmirror_delfn, sd);
+   if (pager || taskbar)
+     {
+        sd->events = evas_object_rectangle_add(e);
+        evas_object_color_set(sd->events, 0, 0, 0, 0);
+        evas_object_clip_set(sd->events, sd->clip);
+        evas_object_smart_member_add(sd->events, o);
+        evas_object_show(sd->events);
+     }
    sd->bgpreview = e_widget_bgpreview_desk_add(e, desk->zone, desk->x, desk->y);
    evas_object_pass_events_set(sd->bgpreview, 1);
    evas_object_clip_set(sd->bgpreview, sd->clip);