we were getting duplicate events for popups. fixed now! :)
authorCarsten Haitzler <raster@rasterman.com>
Thu, 6 Apr 2006 07:26:11 +0000 (07:26 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Thu, 6 Apr 2006 07:26:11 +0000 (07:26 +0000)
SVN revision: 21893

data/themes/default_shelf.edc
src/bin/e_gadcon.c
src/bin/e_main.c
src/bin/e_popup.c
src/bin/e_shelf.c
src/bin/e_shelf.h

index b72b72d..ed8284e 100644 (file)
@@ -40,6 +40,7 @@ group {
       part {
         name:          "base";
         clip_to:       "base_clip";
+        mouse_events:  0;
         description {
            state:    "default" 0.0;
            rel1 {
index 5e86cef..e8f1c99 100644 (file)
@@ -699,7 +699,7 @@ _e_gadcon_cb_mouse_down(void *data, Evas *evas, Evas_Object *obj, void *event_in
    ev = event_info;
    if (ev->button == 3)
      {
-       printf("THREE!\n");
+       printf("THREE! %p\n", gcc);
      }
 }
 
index da894ed..57d0b1d 100644 (file)
@@ -272,7 +272,7 @@ main(int argc, char **argv)
    _e_main_shutdown_push(ecore_shutdown);
    
    _e_cacheburst++;
-//   eet_cacheburst(_e_cacheburst);
+/* eet_cacheburst(_e_cacheburst); */
    ecore_timer_add(5.0, _e_main_cb_eet_cacheburst_end, NULL);
    
     /* init the file system */
@@ -327,7 +327,7 @@ main(int argc, char **argv)
      }
    _e_main_shutdown_push(e_xinerama_shutdown);
    
-//   ecore_x_grab();
+/* ecore_x_grab(); */
    
    ecore_x_io_error_handler_set(_e_main_cb_x_fatal, NULL);
 
@@ -635,7 +635,7 @@ main(int argc, char **argv)
        e_error_message_show(_("Enlightenment cannot set up its desk locking system."));
        _e_main_shutdown(-1);
      }
-   //_e_main_shutdown_push(e_desklock_shutdown);
+/* _e_main_shutdown_push(e_desklock_shutdown); */
 
    if (ipc_failed)
      e_error_dialog_show(_("Enlightenment IPC setup error!"),
@@ -653,7 +653,7 @@ main(int argc, char **argv)
 
    e_managers_keys_grab();
    
-//   ecore_x_ungrab();
+/* ecore_x_ungrab(); */
    
    e_init_title_set(_("Enlightenment"));
    e_init_version_set(VERSION);
@@ -777,7 +777,7 @@ _e_main_shutdown(int errorcode)
 static int
 _e_main_x_shutdown(void)
 {
-//   ecore_x_ungrab();
+/* ecore_x_ungrab(); */
    ecore_x_focus_reset();
    ecore_x_events_allow_all();
 
@@ -1210,19 +1210,17 @@ _e_main_cb_idler_before(void *data __UNUSED__)
          }
      }
    _e_cacheburst--;
-//   eet_cacheburst(_e_cacheburst);
+/* eet_cacheburst(_e_cacheburst); */
    edje_thaw();
-//   printf("IN to idle... %3.3f\n", ecore_time_get());
    return 1;
 }
 
 static int
 _e_main_cb_idler_after(void *data __UNUSED__)
 {
-//   printf("OUT of idle... %3.3f\n", ecore_time_get());
    edje_freeze();
    _e_cacheburst++;
-//   eet_cacheburst(_e_cacheburst);
+/* eet_cacheburst(_e_cacheburst); */
    return 1;
 }
 
@@ -1230,7 +1228,7 @@ static int
 _e_main_cb_eet_cacheburst_end(void *data __UNUSED__)
 {
    _e_cacheburst--;
-//   eet_cacheburst(_e_cacheburst);
+/* eet_cacheburst(_e_cacheburst); */
    return 0;
 }
 
index 1552bec..5fa773d 100644 (file)
@@ -308,6 +308,7 @@ _e_popup_cb_mouse_down(void *data, int type, void *event)
        if (ev->double_click) flags |= EVAS_BUTTON_DOUBLE_CLICK;
        if (ev->triple_click) flags |= EVAS_BUTTON_TRIPLE_CLICK;
        evas_event_feed_mouse_down(pop->evas, ev->button, flags, ev->time, NULL);
+       return 0;
      }
    return 1;
 }
@@ -325,6 +326,7 @@ _e_popup_cb_mouse_up(void *data, int type, void *event)
        evas_event_feed_mouse_up(pop->evas, ev->button, EVAS_BUTTON_NONE, ev->time, NULL);
        e_bindings_mouse_up_event_handle(E_BINDING_CONTEXT_POPUP,
                                         E_OBJECT(pop), ev);
+       return 0;
      }
    return 1;
 }
@@ -342,6 +344,7 @@ _e_popup_cb_mouse_wheel(void *data, int type, void *event)
        e_bindings_wheel_event_handle(E_BINDING_CONTEXT_POPUP,
                                      E_OBJECT(pop), ev);
        evas_event_feed_mouse_wheel(pop->evas, ev->direction, ev->z, ev->time, NULL);
+       return 0;
      }
    return 1;
 }
index 373e775..f6b1aae 100644 (file)
@@ -85,6 +85,10 @@ e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, i
    es->layer = layer;
    es->zone = zone;
    es->style = evas_stringshare_add(style);
+
+   es->o_event = evas_object_rectangle_add(es->evas);
+   evas_object_color_set(es->o_event, 0, 0, 0, 0);
+   evas_object_resize(es->o_event, es->w, es->h);
    
    es->o_base = edje_object_add(es->evas);
    es->name = evas_stringshare_add(name);
@@ -95,12 +99,15 @@ e_shelf_zone_new(E_Zone *zone, const char *name, const char *style, int popup, i
                             "shelf/default/base");
    if (es->popup)
      {
+       evas_object_show(es->o_event);
        evas_object_show(es->o_base);
        e_popup_edje_bg_object_set(es->popup, es->o_base);
      }
    else
      {
+       evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y);
        evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
+       evas_object_layer_set(es->o_event, layer);
        evas_object_layer_set(es->o_base, layer);
      }
 
@@ -139,7 +146,10 @@ e_shelf_show(E_Shelf *es)
    if (es->popup)
      e_popup_show(es->popup);
    else
-     evas_object_show(es->o_base);
+     {
+       evas_object_show(es->o_event);
+       evas_object_show(es->o_base);
+     }
 }
 
 EAPI void
@@ -150,7 +160,10 @@ e_shelf_hide(E_Shelf *es)
    if (es->popup)
      e_popup_hide(es->popup);
    else
-     evas_object_hide(es->o_base);
+     {
+       evas_object_hide(es->o_event);
+       evas_object_hide(es->o_base);
+     }
 }
 
 EAPI void
@@ -163,7 +176,10 @@ e_shelf_move(E_Shelf *es, int x, int y)
    if (es->popup)
      e_popup_move(es->popup, es->x, es->y);
    else
-     evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
+     {
+       evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y);
+       evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
+     }
 }
 
 EAPI void
@@ -174,12 +190,9 @@ e_shelf_resize(E_Shelf *es, int w, int h)
    es->w = w;
    es->h = h;
    if (es->popup)
-     {
-       e_popup_resize(es->popup, es->w, es->h);
-       evas_object_resize(es->o_base, es->w, es->h);
-     }
-   else
-     evas_object_resize(es->o_base, es->w, es->h);
+     e_popup_resize(es->popup, es->w, es->h);
+   evas_object_resize(es->o_event, es->w, es->h);
+   evas_object_resize(es->o_base, es->w, es->h);
 }
 
 EAPI void
@@ -192,15 +205,14 @@ e_shelf_move_resize(E_Shelf *es, int x, int y, int w, int h)
    es->w = w;
    es->h = h;
    if (es->popup)
-     {
-       e_popup_move_resize(es->popup, es->x, es->y, es->w, es->h);
-       evas_object_resize(es->o_base, es->w, es->h);
-     }
+     e_popup_move_resize(es->popup, es->x, es->y, es->w, es->h);
    else
      {
+       evas_object_move(es->o_event, es->zone->x + es->x, es->zone->y + es->y);
        evas_object_move(es->o_base, es->zone->x + es->x, es->zone->y + es->y);
-       evas_object_resize(es->o_base, es->w, es->h);
      }
+   evas_object_resize(es->o_event, es->w, es->h);
+   evas_object_resize(es->o_base, es->w, es->h);
 }
 
 EAPI void
@@ -212,7 +224,10 @@ e_shelf_layer_set(E_Shelf *es, int layer)
    if (es->popup)
      e_popup_layer_set(es->popup, es->layer);
    else
-     evas_object_layer_set(es->o_base, es->layer);
+     {
+       evas_object_layer_set(es->o_event, es->layer);
+       evas_object_layer_set(es->o_base, es->layer);
+     }
 }
 
 EAPI void
@@ -279,6 +294,7 @@ _e_shelf_free(E_Shelf *es)
    e_object_del(E_OBJECT(es->gadcon));
    evas_stringshare_del(es->name);
    evas_stringshare_del(es->style);
+   evas_object_del(es->o_event);
    evas_object_del(es->o_base);
    if (es->popup) e_object_del(E_OBJECT(es->popup));
    free(es);
index 3fd7c91..e6fb0cf 100644 (file)
@@ -19,6 +19,7 @@ struct _E_Shelf
    E_Popup             *popup; /* NULL if its within an existing canvas */
    E_Zone              *zone; 
    Evas_Object         *o_base;
+   Evas_Object         *o_event;
    Ecore_Evas          *ee;
    Evas                *evas;
    E_Gadcon            *gadcon;