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