Enlightenment CVS committal

Author  : moom
Project : e17
Module  : proto

Dir     : e17/proto/etk/src/lib


Modified Files:
        etk_colorpicker.c etk_combobox.c etk_iconbox.c etk_menu.c 
        etk_menu_item.c etk_menu_shell.c etk_radio_button.c 
        etk_range.c etk_signal.c etk_signal.h etk_tree.c etk_widget.c 
        etk_window.c 


Log Message:
* [Signal] etk_signal_emit() now returns the object, or NULL if the 
object has been destroyed by one of the widget.
* Update all the existing widgets' functions to stop ("return;") if a 
widget has been destroyed by a call of etk_signal_emit()


===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_colorpicker.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- etk_colorpicker.c   2 Aug 2006 19:17:00 -0000       1.17
+++ etk_colorpicker.c   8 Aug 2006 00:57:33 -0000       1.18
@@ -739,7 +739,10 @@
             cp->current_color.b = color.b;
             evas_object_color_set(cp->current_color_rect, color.r, color.g, 
color.b, 255);
             if (cp->emit_signal)
-               
etk_signal_emit(_etk_colorpicker_signals[ETK_CP_COLOR_CHANGED_SIGNAL], 
ETK_OBJECT(cp), NULL);
+            {
+               if 
(!etk_signal_emit(_etk_colorpicker_signals[ETK_CP_COLOR_CHANGED_SIGNAL], 
ETK_OBJECT(cp), NULL))
+                  return;
+            }
          }
          
          update_sp_image = !((i != cp->mode) && ((i / 3) == (cp->mode / 3)));
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_combobox.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- etk_combobox.c      5 Aug 2006 16:18:57 -0000       1.19
+++ etk_combobox.c      8 Aug 2006 00:57:33 -0000       1.20
@@ -303,7 +303,8 @@
    if (combobox->active_item != item)
    {
       combobox->active_item = item;
-      
etk_signal_emit(_etk_combobox_signals[ETK_COMBOBOX_ACTIVE_ITEM_CHANGED_SIGNAL], 
ETK_OBJECT(combobox), NULL);
+      if 
(!etk_signal_emit(_etk_combobox_signals[ETK_COMBOBOX_ACTIVE_ITEM_CHANGED_SIGNAL],
 ETK_OBJECT(combobox), NULL))
+         return;
       etk_object_notify(ETK_OBJECT(combobox), "active_item");
    }
 }
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_iconbox.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- etk_iconbox.c       25 May 2006 21:07:00 -0000      1.8
+++ etk_iconbox.c       8 Aug 2006 00:57:33 -0000       1.9
@@ -220,8 +220,8 @@
    
    if (model->iconbox && model->iconbox->current_model == model)
    {
-      etk_signal_emit_by_name("scroll_size_changed", 
ETK_OBJECT(model->iconbox->grid), NULL);
       etk_widget_redraw_queue(model->iconbox->grid);
+      etk_signal_emit_by_name("scroll_size_changed", 
ETK_OBJECT(model->iconbox->grid), NULL);
    }
 }
 
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_menu.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- etk_menu.c  25 May 2006 21:07:00 -0000      1.15
+++ etk_menu.c  8 Aug 2006 00:57:33 -0000       1.16
@@ -249,7 +249,8 @@
    for (l = menu_shell->items; l; l = l->next)
       etk_menu_item_deselect(ETK_MENU_ITEM(l->data));
    
-   etk_signal_emit(_etk_menu_signals[ETK_MENU_POPPED_DOWN_SIGNAL], 
ETK_OBJECT(menu_shell), NULL);
+   if (!etk_signal_emit(_etk_menu_signals[ETK_MENU_POPPED_DOWN_SIGNAL], 
ETK_OBJECT(menu_shell), NULL))
+      return;
    if (menu_shell->parent)
       etk_signal_emit_by_name("submenu_popped_down", 
ETK_OBJECT(menu_shell->parent), NULL);
 }
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_menu_item.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- etk_menu_item.c     2 Aug 2006 19:17:00 -0000       1.16
+++ etk_menu_item.c     8 Aug 2006 00:57:33 -0000       1.17
@@ -938,7 +938,8 @@
    {
       check_item->active = active;
       etk_object_notify(ETK_OBJECT(check_item), "active");
-      
etk_signal_emit(_etk_menu_item_check_signals[ETK_MENU_ITEM_CHECK_TOGGLED_SIGNAL],
 ETK_OBJECT(check_item), NULL);
+      if 
(!etk_signal_emit(_etk_menu_item_check_signals[ETK_MENU_ITEM_CHECK_TOGGLED_SIGNAL],
 ETK_OBJECT(check_item), NULL))
+         return;
    
       if (check_item->active)
       {
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_menu_shell.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- etk_menu_shell.c    14 May 2006 21:29:22 -0000      1.6
+++ etk_menu_shell.c    8 Aug 2006 00:57:33 -0000       1.7
@@ -155,9 +155,9 @@
    {
       etk_widget_parent_set(ETK_WIDGET(item), NULL);
       item->parent = NULL;
-      
etk_signal_emit(_etk_menu_shell_signals[ETK_MENU_SHELL_ITEM_REMOVED_SIGNAL], 
ETK_OBJECT(menu_shell), NULL, item);
       menu_shell->items = evas_list_remove_list(menu_shell->items, l);
       etk_widget_size_recalc_queue(ETK_WIDGET(menu_shell));
+      
etk_signal_emit(_etk_menu_shell_signals[ETK_MENU_SHELL_ITEM_REMOVED_SIGNAL], 
ETK_OBJECT(menu_shell), NULL, item);
    }
 }
 
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_radio_button.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- etk_radio_button.c  2 Jun 2006 18:46:34 -0000       1.8
+++ etk_radio_button.c  8 Aug 2006 00:57:33 -0000       1.9
@@ -228,7 +228,8 @@
    {
       toggle_button->active = active;
       etk_object_notify(ETK_OBJECT(toggle_button), "active");
-      etk_signal_emit_by_name("toggled", ETK_OBJECT(toggle_button), NULL);
+      if (!etk_signal_emit_by_name("toggled", ETK_OBJECT(toggle_button), NULL))
+         return;
    
       if (toggle_button->active)
       {
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_range.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- etk_range.c 2 Jun 2006 18:46:34 -0000       1.11
+++ etk_range.c 8 Aug 2006 00:57:33 -0000       1.12
@@ -91,7 +91,8 @@
    if (new_value != range->value)
    {
       range->value = new_value;
-      etk_signal_emit(_etk_range_signals[ETK_RANGE_VALUE_CHANGED_SIGNAL], 
ETK_OBJECT(range), NULL, range->value);
+      if 
(!(etk_signal_emit(_etk_range_signals[ETK_RANGE_VALUE_CHANGED_SIGNAL], 
ETK_OBJECT(range), NULL, range->value)))
+         return;
       etk_object_notify(ETK_OBJECT(range), "value");
    }
 }
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_signal.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- etk_signal.c        8 Aug 2006 00:18:40 -0000       1.14
+++ etk_signal.c        8 Aug 2006 00:57:33 -0000       1.15
@@ -282,17 +282,21 @@
  * @param object the object which will emit the signal
  * @param return_value the location where store the return value ( @a 
return_value may be NULL)
  * @param ... the arguments to pass to the callback function
+ * @return Returns @a object, or NULL if @a object has been destroyed by one 
of the callbacks
  */
-void etk_signal_emit(Etk_Signal *signal, Etk_Object *object, void 
*return_value, ...)
+Etk_Object *etk_signal_emit(Etk_Signal *signal, Etk_Object *object, void 
*return_value, ...)
 {
    va_list args;
+   Etk_Object *ret_obj;
 
    if (!object || !signal)
-      return;
+      return object;
 
    va_start(args, return_value);
-   etk_signal_emit_valist(signal, object, return_value, args);
+   ret_obj = etk_signal_emit_valist(signal, object, return_value, args);
    va_end(args);
+   
+   return ret_obj;
 }
 
 /**
@@ -301,24 +305,28 @@
  * @param object the object which will emit the signal
  * @param return_value the location where store the return value ( @a 
return_value may be NULL)
  * @param ... the arguments to pass to the callback function
+ * @return Returns @a object, or NULL if @a object has been destroyed by one 
of the callbacks
  */
-void etk_signal_emit_by_name(const char *signal_name, Etk_Object *object, void 
*return_value, ...)
+Etk_Object *etk_signal_emit_by_name(const char *signal_name, Etk_Object 
*object, void *return_value, ...)
 {
    va_list args;
    Etk_Signal *signal;
+   Etk_Object *ret_obj;
 
    if (!object || !signal_name)
-      return;
+      return object;
 
    if (!(signal = etk_signal_lookup(signal_name, 
etk_object_object_type_get(object))))
    {
       ETK_WARNING("Invalid signal emission: the object type doesn't have a 
signal called \"%s\"", signal_name);
-      return;
+      return object;
    }
 
    va_start(args, return_value);
-   etk_signal_emit_valist(signal, object, return_value, args);
+   ret_obj = etk_signal_emit_valist(signal, object, return_value, args);
    va_end(args);
+   
+   return ret_obj;
 }
 
 /**
@@ -327,8 +335,9 @@
  * @param object the object which will emit the signal
  * @param return_value the location where store the return value ( @a 
return_value may be NULL)
  * @param args the arguments to pass to the callback function
+ * @return Returns @a object, or NULL if @a object has been destroyed by one 
of the callbacks
  */
-void etk_signal_emit_valist(Etk_Signal *signal, Etk_Object *object, void 
*return_value, va_list args)
+Etk_Object *etk_signal_emit_valist(Etk_Signal *signal, Etk_Object *object, 
void *return_value, va_list args)
 {
    Evas_List *callbacks;
    Etk_Signal_Callback *callback;
@@ -339,7 +348,7 @@
    void *object_ptr;
 
    if (!object || !signal)
-      return;
+      return object;
 
    /* The pointer object will be set to NULL if the object is destroyed by a 
callback */
    object_ptr = object;
@@ -426,6 +435,8 @@
    free(emitted_signal);
    
    va_end(args2);
+   
+   return object_ptr;
 }
 
 /**
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_signal.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- etk_signal.h        2 Jun 2006 18:46:34 -0000       1.7
+++ etk_signal.h        8 Aug 2006 00:57:33 -0000       1.8
@@ -46,9 +46,9 @@
 void etk_signal_connect_full(Etk_Signal *signal, Etk_Object *object, 
Etk_Signal_Callback_Function callback, void *data, Etk_Bool swapped, Etk_Bool 
after);
 void etk_signal_disconnect(const char *signal_name, Etk_Object *object, 
Etk_Signal_Callback_Function callback);
 
-void etk_signal_emit(Etk_Signal *signal, Etk_Object *object, void 
*return_value, ...);
-void etk_signal_emit_by_name(const char *signal_name, Etk_Object *object, void 
*return_value, ...);
-void etk_signal_emit_valist(Etk_Signal *signal, Etk_Object *object, void 
*return_value, va_list args);
+Etk_Object *etk_signal_emit(Etk_Signal *signal, Etk_Object *object, void 
*return_value, ...);
+Etk_Object *etk_signal_emit_by_name(const char *signal_name, Etk_Object 
*object, void *return_value, ...);
+Etk_Object *etk_signal_emit_valist(Etk_Signal *signal, Etk_Object *object, 
void *return_value, va_list args);
 
 void etk_signal_stop();
 
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_tree.c,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -3 -r1.68 -r1.69
--- etk_tree.c  29 Jul 2006 20:09:06 -0000      1.68
+++ etk_tree.c  8 Aug 2006 00:57:33 -0000       1.69
@@ -387,8 +387,8 @@
    etk_object_notify(ETK_OBJECT(col), "width");
    if (col->tree)
    {
-      etk_signal_emit_by_name("scroll_size_changed", 
ETK_OBJECT(col->tree->grid), NULL);
       etk_widget_redraw_queue(ETK_WIDGET(col->tree->grid));
+      etk_signal_emit_by_name("scroll_size_changed", 
ETK_OBJECT(col->tree->grid), NULL);
    }
 }
 
@@ -417,8 +417,8 @@
    etk_object_notify(ETK_OBJECT(col), "min_width");
    if (col->tree)
    {
-      etk_signal_emit_by_name("scroll_size_changed", 
ETK_OBJECT(col->tree->grid), NULL);
       etk_widget_redraw_queue(ETK_WIDGET(col->tree->grid));
+      etk_signal_emit_by_name("scroll_size_changed", 
ETK_OBJECT(col->tree->grid), NULL);
    }
 }
 
@@ -499,8 +499,8 @@
    etk_object_notify(ETK_OBJECT(col), "visible");
    if (col->tree)
    {
-      etk_signal_emit_by_name("scroll_size_changed", 
ETK_OBJECT(col->tree->grid), NULL);
       etk_widget_redraw_queue(ETK_WIDGET(col->tree->grid));
+      etk_signal_emit_by_name("scroll_size_changed", 
ETK_OBJECT(col->tree->grid), NULL);
    }
 }
 
@@ -645,9 +645,9 @@
    if (!tree || !tree->frozen)
       return;
    
-   etk_signal_emit_by_name("scroll_size_changed", ETK_OBJECT(tree->grid), 
NULL);
-   etk_widget_redraw_queue(ETK_WIDGET(tree->grid));
    tree->frozen = ETK_FALSE;
+   etk_widget_redraw_queue(ETK_WIDGET(tree->grid));
+   etk_signal_emit_by_name("scroll_size_changed", ETK_OBJECT(tree->grid), 
NULL);
 }
 
 /**
@@ -674,9 +674,9 @@
    }
    
    etk_object_notify(ETK_OBJECT(tree), "row_height");
-   etk_signal_emit_by_name("scroll_size_changed", ETK_OBJECT(tree->grid), 
NULL);
    etk_widget_redraw_queue(ETK_WIDGET(tree->grid));
    
etk_range_increments_set(etk_scrolled_view_vscrollbar_get(ETK_SCROLLED_VIEW(tree->scrolled_view)),
 tree->row_height, 5 * tree->row_height);
+   etk_signal_emit_by_name("scroll_size_changed", ETK_OBJECT(tree->grid), 
NULL);
 }
 
 /**
@@ -729,8 +729,8 @@
       return;
 
    _etk_tree_row_select_all(&tree->root);
-   etk_signal_emit(_etk_tree_signals[ETK_TREE_SELECT_ALL_SIGNAL], 
ETK_OBJECT(tree), NULL);
    etk_widget_redraw_queue(ETK_WIDGET(tree->grid));
+   etk_signal_emit(_etk_tree_signals[ETK_TREE_SELECT_ALL_SIGNAL], 
ETK_OBJECT(tree), NULL);
 }
 
 /**
@@ -745,12 +745,14 @@
    if (tree->last_selected && tree->last_selected->selected)
    {
       tree->last_selected->selected = ETK_FALSE;
-      etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_UNSELECTED_SIGNAL], 
ETK_OBJECT(tree), NULL, tree->last_selected);
+      if (!etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_UNSELECTED_SIGNAL], 
ETK_OBJECT(tree), NULL, tree->last_selected))
+         return;
    }
    if (tree->multiple_select)
    {
       _etk_tree_row_unselect_all(&tree->root);
-      etk_signal_emit(_etk_tree_signals[ETK_TREE_UNSELECT_ALL_SIGNAL], 
ETK_OBJECT(tree), NULL);
+      if (!etk_signal_emit(_etk_tree_signals[ETK_TREE_UNSELECT_ALL_SIGNAL], 
ETK_OBJECT(tree), NULL))
+         return;
    }
    tree->num_selected_rows = 0;
    etk_widget_redraw_queue(ETK_WIDGET(tree->grid));
@@ -840,26 +842,27 @@
 void etk_tree_row_del(Etk_Tree_Row *row)
 {
    Etk_Tree_Row *r;
+   Etk_Tree *tree;
 
-   if (!row)
+   if (!row || !(tree = row->tree))
       return;
 
-   for (r = row->tree->last_selected; r; r = r->parent)
+   for (r = tree->last_selected; r; r = r->parent)
    {
       if (row == r)
       {
-         row->tree->last_selected = NULL;
+         tree->last_selected = NULL;
          break;
       }
    }
    
-   if (!row->tree->frozen)
+   _etk_tree_row_free(row);
+   
+   if (!tree->frozen)
    {
-      etk_signal_emit_by_name("scroll_size_changed", 
ETK_OBJECT(row->tree->grid), NULL);
-      etk_widget_redraw_queue(ETK_WIDGET(row->tree->grid));
+      etk_widget_redraw_queue(ETK_WIDGET(tree->grid));
+      etk_signal_emit_by_name("scroll_size_changed", ETK_OBJECT(tree->grid), 
NULL);
    }
-   
-   _etk_tree_row_free(row);
 }
 
 /**
@@ -875,8 +878,8 @@
       _etk_tree_row_free(tree->root.first_child);
    tree->last_selected = NULL;
    
-   etk_signal_emit_by_name("scroll_size_changed", ETK_OBJECT(tree->grid), 
NULL);
    etk_widget_redraw_queue(ETK_WIDGET(tree->grid));
+   etk_signal_emit_by_name("scroll_size_changed", ETK_OBJECT(tree->grid), 
NULL);
 }
 
 /**
@@ -1197,9 +1200,9 @@
       return;
    
    row->selected = ETK_FALSE;
-   etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_UNSELECTED_SIGNAL], 
ETK_OBJECT(row->tree), NULL, row);
    if (!row->tree->frozen)
       etk_widget_redraw_queue(ETK_WIDGET(row->tree->grid));
+   etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_UNSELECTED_SIGNAL], 
ETK_OBJECT(row->tree), NULL, row);
 }
 
 /**
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_widget.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -3 -r1.63 -r1.64
--- etk_widget.c        8 Aug 2006 00:18:40 -0000       1.63
+++ etk_widget.c        8 Aug 2006 00:57:33 -0000       1.64
@@ -1741,9 +1741,10 @@
 {
    if (!widget)
       return;
-   etk_signal_emit(_etk_widget_signals[ETK_WIDGET_DRAG_DROP_SIGNAL], 
ETK_OBJECT(widget), NULL, event);
+   
    /* TODO: FIXME: why isnt this being emitted automatically?!? */
    etk_widget_theme_object_signal_emit(widget, "drag_drop");   
+   etk_signal_emit(_etk_widget_signals[ETK_WIDGET_DRAG_DROP_SIGNAL], 
ETK_OBJECT(widget), NULL, event);
 }
 
 /**
@@ -1765,7 +1766,6 @@
 {
    if (!widget)
       return;
-
    etk_signal_emit(_etk_widget_signals[ETK_WIDGET_DRAG_ENTER_SIGNAL], 
ETK_OBJECT(widget), NULL);
 }
 
@@ -2193,7 +2193,8 @@
    event.locks = evas_event->locks;
    event.timestamp = evas_event->timestamp;
 
-   etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_IN_SIGNAL], 
ETK_OBJECT(widget), NULL, &event);
+   if (!etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_IN_SIGNAL], 
ETK_OBJECT(widget), NULL, &event))
+      return;
    
    /* TODO: should we really propagate the mouse in event? */
    if (widget->parent)
@@ -2227,7 +2228,8 @@
    event.locks = evas_event->locks;
    event.timestamp = evas_event->timestamp;
 
-   etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_OUT_SIGNAL], 
ETK_OBJECT(widget), NULL, &event);
+   if (!etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_OUT_SIGNAL], 
ETK_OBJECT(widget), NULL, &event))
+      return;
    
    /* TODO: should we really propagate the mouse out event? */
    if (widget->parent)
@@ -2265,7 +2267,8 @@
    event.locks = evas_event->locks;
    event.timestamp = evas_event->timestamp;
 
-   etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_MOVE_SIGNAL], 
ETK_OBJECT(widget), NULL, &event);
+   if (!etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_MOVE_SIGNAL], 
ETK_OBJECT(widget), NULL, &event))
+      return;
    
    if (widget->parent)
       _etk_widget_mouse_move_cb(widget->parent, evas, NULL, event_info);
@@ -2291,7 +2294,8 @@
    event.flags = evas_event->flags;
    event.timestamp = evas_event->timestamp;
 
-   etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_DOWN_SIGNAL], 
ETK_OBJECT(widget), NULL, &event);
+   if (!etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_DOWN_SIGNAL], 
ETK_OBJECT(widget), NULL, &event))
+      return;
    
    if (widget->repeat_mouse_events && widget->parent)
       _etk_widget_mouse_down_cb(widget->parent, evas, NULL, event_info);
@@ -2327,11 +2331,15 @@
    event.flags = evas_event->flags;
    event.timestamp = evas_event->timestamp;
 
-   etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_UP_SIGNAL], 
ETK_OBJECT(widget), NULL, &event);
+   if (!etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_UP_SIGNAL], 
ETK_OBJECT(widget), NULL, &event))
+      return;
    
    if (evas_event->canvas.x >= widget->geometry.x && evas_event->canvas.x <= 
widget->geometry.x + widget->geometry.w &&
-         evas_event->canvas.y >= widget->geometry.y && evas_event->canvas.y <= 
widget->geometry.y + widget->geometry.h)
-      etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_CLICK_SIGNAL], 
ETK_OBJECT(widget), NULL, &event);
+      evas_event->canvas.y >= widget->geometry.y && evas_event->canvas.y <= 
widget->geometry.y + widget->geometry.h)
+   {
+      if (!etk_signal_emit(_etk_widget_signals[ETK_WIDGET_MOUSE_CLICK_SIGNAL], 
ETK_OBJECT(widget), NULL, &event))
+         return;
+   }
    
    /* TODO: what if the widget is destroyed by one of the callbacks (recurrent 
problem!!!) ?? */
    if (widget->repeat_mouse_events && widget->parent)
@@ -2550,7 +2558,8 @@
    widget->need_theme_min_size_recalc = ETK_TRUE;
    widget->realized = ETK_TRUE;
 
-   etk_signal_emit(_etk_widget_signals[ETK_WIDGET_REALIZE_SIGNAL], 
ETK_OBJECT(widget), NULL);
+   if (!etk_signal_emit(_etk_widget_signals[ETK_WIDGET_REALIZE_SIGNAL], 
ETK_OBJECT(widget), NULL))
+      return;
    
    /* Finally, we clip the widget */
    if (widget->clip)
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_window.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- etk_window.c        30 Jul 2006 21:09:33 -0000      1.32
+++ etk_window.c        8 Aug 2006 00:57:33 -0000       1.33
@@ -735,21 +735,24 @@
 /* Called when the window is resized by the engine */
 static void _etk_window_resize_cb(Etk_Window *window)
 {
-   etk_signal_emit(_etk_window_signals[ETK_WINDOW_RESIZE_SIGNAL], 
ETK_OBJECT(window), NULL);
+   if (!etk_signal_emit(_etk_window_signals[ETK_WINDOW_RESIZE_SIGNAL], 
ETK_OBJECT(window), NULL))
+      return;
    etk_widget_redraw_queue(ETK_WIDGET(window));   
 }
 
 /* Called when the window is focused by the engine */
 static void _etk_window_focus_in_cb(Etk_Window *window)
 {
-   etk_signal_emit(_etk_window_signals[ETK_WINDOW_FOCUS_IN_SIGNAL], 
ETK_OBJECT(window), NULL);
+   if (!etk_signal_emit(_etk_window_signals[ETK_WINDOW_FOCUS_IN_SIGNAL], 
ETK_OBJECT(window), NULL))
+      return;
    etk_object_notify(ETK_OBJECT(window), "focused");   
 }
 
 /* Called when the window is unfocused by the engine */
 static void _etk_window_focus_out_cb(Etk_Window *window)
 {
-   etk_signal_emit(_etk_window_signals[ETK_WINDOW_FOCUS_OUT_SIGNAL], 
ETK_OBJECT(window), NULL);
+   if (!etk_signal_emit(_etk_window_signals[ETK_WINDOW_FOCUS_OUT_SIGNAL], 
ETK_OBJECT(window), NULL))
+      return;
    etk_object_notify(ETK_OBJECT(window), "focused");   
 }
 
@@ -764,8 +767,7 @@
 {
    Etk_Bool result;
    
-   etk_signal_emit(_etk_window_signals[ETK_WINDOW_DELETE_EVENT_SIGNAL], 
ETK_OBJECT(window), &result);
-   if (!result)
+   if (etk_signal_emit(_etk_window_signals[ETK_WINDOW_DELETE_EVENT_SIGNAL], 
ETK_OBJECT(window), &result) && result)
       etk_object_destroy(ETK_OBJECT(window));
 }
 



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to