Enlightenment CVS committal Author : codewarrior Project : e17 Module : proto
Dir : e17/proto/etk/src/lib Modified Files: etk_filechooser_widget.c etk_tooltips.c etk_tooltips.h etk_tree.c Log Message: - more tooltip work - trying out tooltips on trees using the file selector, not 100% bug free - make the action/go_up button in the filechooser work =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_filechooser_widget.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- etk_filechooser_widget.c 12 Feb 2006 12:27:49 -0000 1.7 +++ etk_filechooser_widget.c 6 Mar 2006 22:49:11 -0000 1.8 @@ -4,6 +4,7 @@ #include <stdio.h> #include <string.h> #include <limits.h> +#include <Ecore.h> #include <Ecore_Data.h> #include <Ecore_File.h> #include "etk_theme.h" @@ -16,6 +17,7 @@ #include "etk_box.h" #include "etk_hbox.h" #include "etk_vbox.h" +#include "etk_tooltips.h" #include "config.h" /* OS-specific to list the mount points */ @@ -63,6 +65,8 @@ static void _etk_filechooser_widget_place_activated_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); static void _etk_filechooser_widget_fav_activated_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); static void _etk_filechooser_widget_file_activated_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); +static void _etk_filechooser_files_tree_row_mouse_in_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); +static void _etk_filechooser_files_tree_row_mouse_out_cb(Etk_Object *object, Etk_Tree_Row *row, void *data); static void _etk_filechooser_widget_places_tree_fill(Etk_Filechooser_Widget *fcw); static void _etk_filechooser_widget_favs_tree_fill(Etk_Filechooser_Widget *fcw); @@ -92,6 +96,9 @@ static int _etk_filechooser_num_unsupported_fs = sizeof(_etk_filechooser_unsupported_fs) / sizeof (_etk_filechooser_unsupported_fs[0]); /* static Etk_Signal *_etk_filechooser_widget_signals[ETK_FILECHOOSER_WIDGET_NUM_SIGNALS]; */ +static Ecore_Timer *_etk_filechooser_timer = NULL; +static char _etk_filechooser_tooltip_text[PATH_MAX + 128]; + /************************** * * Implementation @@ -341,6 +348,8 @@ etk_widget_show(fcw->files_tree); etk_widget_visibility_locked_set(fcw->files_tree, ETK_TRUE); etk_signal_connect("row_activated", ETK_OBJECT(fcw->files_tree), ETK_CALLBACK(_etk_filechooser_widget_file_activated_cb), fcw); + etk_signal_connect("row_mouse_in", ETK_OBJECT(fcw->files_tree), ETK_CALLBACK(_etk_filechooser_files_tree_row_mouse_in_cb), fcw); + etk_signal_connect("row_mouse_out", ETK_OBJECT(fcw->files_tree), ETK_CALLBACK(_etk_filechooser_files_tree_row_mouse_out_cb), fcw); _etk_filechooser_widget_places_tree_fill(ETK_FILECHOOSER_WIDGET(fcw)); _etk_filechooser_widget_favs_tree_fill(ETK_FILECHOOSER_WIDGET(fcw)); @@ -349,7 +358,7 @@ etk_filechooser_widget_current_folder_set(ETK_FILECHOOSER_WIDGET(fcw), NULL); } -/* Destroys the status bar */ +/* Destroys the file chooser */ static void _etk_filechooser_widget_destructor(Etk_Filechooser_Widget *filechooser_widget) { if (!filechooser_widget) @@ -437,7 +446,12 @@ return; if (strcmp(selected_dir, "..") == 0) - ; + { + char back[PATH_MAX]; + + snprintf(back, PATH_MAX, "%s/..", filechooser_widget->current_folder); + etk_filechooser_widget_current_folder_set(filechooser_widget, back); + } else etk_filechooser_widget_current_folder_set(filechooser_widget, selected_dir); } @@ -464,6 +478,11 @@ etk_tree_row_fields_get(row, filechooser_widget->files_name_col, NULL, NULL, &selected_file, NULL); snprintf(file_path, PATH_MAX, "%s/%s", filechooser_widget->current_folder, selected_file); + + if(_etk_filechooser_timer) + ecore_timer_del(_etk_filechooser_timer); + _etk_filechooser_timer = NULL; + etk_tooltips_pop_down(); if (ecore_file_exists(file_path)) { @@ -474,6 +493,54 @@ } } +static int _etk_filechooser_timer_cb(void *data) +{ + Etk_Filechooser_Widget *fcw; + + _etk_filechooser_timer = NULL; + + if (!(fcw = ETK_FILECHOOSER_WIDGET(data))) + return 0; + + etk_tooltips_tip_set(ETK_WIDGET(fcw), _etk_filechooser_tooltip_text); + return 0; +} + +/* Called when the mouse enters a row */ +static void _etk_filechooser_files_tree_row_mouse_in_cb(Etk_Object *object, Etk_Tree_Row *row, void *data) +{ + Etk_Filechooser_Widget *fcw; + char *selected_file; + char file_path[PATH_MAX]; + + if (!(fcw = ETK_FILECHOOSER_WIDGET(data))) + return; + + etk_tree_row_fields_get(row, fcw->files_name_col, NULL, NULL, &selected_file, NULL); + + snprintf(file_path, PATH_MAX, "%s/%s", fcw->current_folder, selected_file); + if(!ecore_file_exists(file_path)) + return; + + snprintf(_etk_filechooser_tooltip_text, sizeof(_etk_filechooser_tooltip_text), " %s <br> %d Kb <br> ", selected_file, ecore_file_size(file_path) / 1024); + + _etk_filechooser_timer = ecore_timer_add(0.08, _etk_filechooser_timer_cb, fcw); +} + +/* Called when the mouse leaves a row */ +static void _etk_filechooser_files_tree_row_mouse_out_cb(Etk_Object *object, Etk_Tree_Row *row, void *data) +{ + Etk_Filechooser_Widget *fcw; + + if (!(fcw = ETK_FILECHOOSER_WIDGET(data))) + return; + + if(_etk_filechooser_timer) + ecore_timer_del(_etk_filechooser_timer); + _etk_filechooser_timer = NULL; + etk_tooltips_tip_set(ETK_WIDGET(fcw), NULL); +} + /************************** * * Private functions =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tooltips.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- etk_tooltips.c 6 Mar 2006 00:15:22 -0000 1.2 +++ etk_tooltips.c 6 Mar 2006 22:49:12 -0000 1.3 @@ -22,12 +22,14 @@ static void _etk_tooltips_mouse_out_cb(Etk_Object *object, Etk_Event_Mouse_In_Out *event, void *data); static void _etk_tooltips_mouse_move_cb(Etk_Object *object, Etk_Event_Mouse_Move *event, void *data); static void _etk_tooltips_mouse_down_cb(Etk_Object *object, void *event, void *data); +static void _etk_tooltips_mouse_wheel_cb(Etk_Object *object, void *event, void *data); static void _etk_tooltips_key_down_cb(Etk_Object *object, void *event, void *data); static void _etk_tooltips_widget_unrealize_cb(Etk_Object *object, void *data); static int _etk_tooltips_timer_cb(void *data); static Etk_Widget *_etk_tooltips_window = NULL; static Etk_Widget *_etk_tooltips_label = NULL; +static Etk_Object *_etk_tooltips_cur_object = NULL; static double _etk_tooltips_delay = 1.0; static Etk_Bool _etk_tooltips_enabled = ETK_FALSE; static Etk_Bool _etk_tooltips_initialized = ETK_FALSE; @@ -107,21 +109,41 @@ key = calloc(32, sizeof(char)); snprintf(key, 32 * sizeof(char), "%p", widget); + if((tip_text = evas_hash_find(_etk_tooltips_hash, key)) != NULL) { - free(tip_text); - tip_text = strdup(text); - _etk_tooltips_hash = evas_hash_modify(_etk_tooltips_hash, key, tip_text); + if(text == NULL) + { + _etk_tooltips_hash = evas_hash_del(_etk_tooltips_hash, key, tip_text); + etk_signal_disconnect("mouse_in", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_in_cb)); + etk_signal_disconnect("mouse_out", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_out_cb)); + etk_signal_disconnect("mouse_move", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_move_cb)); + etk_signal_disconnect("mouse_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_down_cb)); + etk_signal_disconnect("mouse_wheel", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_wheel_cb)); + etk_signal_disconnect("key_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_key_down_cb)); + etk_signal_disconnect("unrealize", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_widget_unrealize_cb)); + free(tip_text); + } + else + { + free(tip_text); + tip_text = strdup(text); + _etk_tooltips_hash = evas_hash_modify(_etk_tooltips_hash, key, tip_text); + } } else { - _etk_tooltips_hash = evas_hash_add(_etk_tooltips_hash, key, strdup(text)); - etk_signal_connect("mouse_in", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_in_cb), NULL); - etk_signal_connect("mouse_out", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_out_cb), NULL); - etk_signal_connect("mouse_move", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_move_cb), NULL); - etk_signal_connect("mouse_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_down_cb), NULL); - etk_signal_connect("key_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_key_down_cb), NULL); - etk_signal_connect("unrealize", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_widget_unrealize_cb), NULL); + if(text != NULL) + { + _etk_tooltips_hash = evas_hash_add(_etk_tooltips_hash, key, strdup(text)); + etk_signal_connect("mouse_in", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_in_cb), NULL); + etk_signal_connect("mouse_out", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_out_cb), NULL); + etk_signal_connect("mouse_move", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_move_cb), NULL); + etk_signal_connect("mouse_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_down_cb), NULL); + etk_signal_connect("mouse_wheel", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_mouse_wheel_cb), NULL); + etk_signal_connect("key_down", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_key_down_cb), NULL); + etk_signal_connect("unrealize", ETK_OBJECT(widget), ETK_CALLBACK(_etk_tooltips_widget_unrealize_cb), NULL); + } } free(key); } @@ -147,40 +169,36 @@ return NULL; } -static void _etk_tooltips_mouse_in_cb(Etk_Object *object, Etk_Event_Mouse_In_Out *event, void *data) -{ -#if HAVE_ECORE_X - if(!_etk_tooltips_enabled) - return; - - _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, object); -#endif -} - -static int _etk_tooltips_timer_cb(void *data) +/** + * @brief Instantly pop up the tooltip if applicable + * @param widget the widget we want to pop up on + */ +void etk_tooltips_pop_up(Etk_Widget *widget) { #if HAVE_ECORE_X - const char *text; + const char *text = NULL; int x, y; char *key; + + if(!ETK_IS_OBJECT(widget)) + return; key = calloc(32, sizeof(char)); - snprintf(key, 32 * sizeof(char), "%p", data); + snprintf(key, 32 * sizeof(char), "%p", ETK_OBJECT(widget)); if((text = evas_hash_find(_etk_tooltips_hash, key)) == NULL) { free(key); _etk_tooltips_timer = NULL; - return 0; - } - + return; + } + { /* We are doing this because if the label / window grow, then are not shrinking anymore */ - etk_object_destroy(ETK_OBJECT(_etk_tooltips_window)); + etk_object_destroy(ETK_OBJECT(_etk_tooltips_window)); _etk_tooltips_window = etk_widget_new(ETK_WINDOW_TYPE, "theme_group", "tooltip", "decorated", ETK_FALSE, "skip_taskbar", ETK_TRUE, "skip_pager", ETK_TRUE, NULL); - + _etk_tooltips_label = etk_label_new(NULL); - etk_container_add(ETK_CONTAINER(_etk_tooltips_window), _etk_tooltips_label); - + etk_container_add(ETK_CONTAINER(_etk_tooltips_window), _etk_tooltips_label); } etk_label_set(ETK_LABEL(_etk_tooltips_label), text); @@ -190,51 +208,96 @@ etk_widget_show_all(_etk_tooltips_window); free(key); #endif - _etk_tooltips_timer = NULL; + _etk_tooltips_timer = NULL; +} + +/** + * @brief Instantly pop down the tooltip if applicable + */ +void etk_tooltips_pop_down() +{ + if(!_etk_tooltips_enabled) + return; + + etk_widget_hide(_etk_tooltips_window); + if(_etk_tooltips_timer) + ecore_timer_del(_etk_tooltips_timer); + _etk_tooltips_cur_object = NULL; +} + +/* Callback for when the mouse enters a widget */ +static void _etk_tooltips_mouse_in_cb(Etk_Object *object, Etk_Event_Mouse_In_Out *event, void *data) +{ +#if HAVE_ECORE_X + if(!_etk_tooltips_enabled || !ETK_IS_OBJECT(object)) + return; + + _etk_tooltips_cur_object = object; + _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, NULL); +#endif +} + +/* Timer callback, pops up the tooltip */ +static int _etk_tooltips_timer_cb(void *data) +{ + etk_tooltips_pop_up(ETK_WIDGET(_etk_tooltips_cur_object)); return 0; } +/* Callback for when the mouse leave the widget */ static void _etk_tooltips_mouse_out_cb(Etk_Object *object, Etk_Event_Mouse_In_Out *event, void *data) { if(!_etk_tooltips_enabled) return; - ecore_timer_del(_etk_tooltips_timer); + etk_tooltips_pop_down(); } +/* Callback for when the mouse moves on the widget */ static void _etk_tooltips_mouse_move_cb(Etk_Object *object, Etk_Event_Mouse_Move *event, void *data) { if(!_etk_tooltips_enabled) return; - etk_widget_hide(_etk_tooltips_window); - if(_etk_tooltips_timer) - ecore_timer_del(_etk_tooltips_timer); - _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, object); + etk_tooltips_pop_down(); + _etk_tooltips_cur_object = object; + _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, NULL); } +/* Callback for when the mouse clicks the widget */ static void _etk_tooltips_mouse_down_cb(Etk_Object *object, void *event, void *data) { if(!_etk_tooltips_enabled) return; - etk_widget_hide(_etk_tooltips_window); - if(_etk_tooltips_timer) - ecore_timer_del(_etk_tooltips_timer); - _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, object); + etk_tooltips_pop_down(); + _etk_tooltips_cur_object = object; + _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, NULL); +} + +/* Callback for when the mouse wheel is moved on the widget */ +static void _etk_tooltips_mouse_wheel_cb(Etk_Object *object, void *event, void *data) +{ + if(!_etk_tooltips_enabled) + return; + + etk_tooltips_pop_down(); + _etk_tooltips_cur_object = object; + _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, NULL); } +/* Callback for when the a key is pressed on the widget */ static void _etk_tooltips_key_down_cb(Etk_Object *object, void *event, void *data) { if(!_etk_tooltips_enabled) return; - etk_widget_hide(_etk_tooltips_window); - if(_etk_tooltips_timer) - ecore_timer_del(_etk_tooltips_timer); - _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, object); + etk_tooltips_pop_down(); + _etk_tooltips_cur_object = object; + _etk_tooltips_timer = ecore_timer_add(_etk_tooltips_delay, _etk_tooltips_timer_cb, NULL); } +/* Callback for when the widget is unrealized */ static void _etk_tooltips_widget_unrealize_cb(Etk_Object *object, void *data) { char *key; =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tooltips.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- etk_tooltips.h 5 Mar 2006 23:52:58 -0000 1.1 +++ etk_tooltips.h 6 Mar 2006 22:49:12 -0000 1.2 @@ -17,6 +17,8 @@ void etk_tooltips_tip_set(Etk_Widget *widget, const char *text); const char *etk_tooltips_tip_get(Etk_Widget *widget); +void etk_tooltips_pop_up(Etk_Widget *widget); +void etk_tooltips_pop_down(); /** @} */ =================================================================== RCS file: /cvsroot/enlightenment/e17/proto/etk/src/lib/etk_tree.c,v retrieving revision 1.54 retrieving revision 1.55 diff -u -3 -r1.54 -r1.55 --- etk_tree.c 4 Mar 2006 23:29:47 -0000 1.54 +++ etk_tree.c 6 Mar 2006 22:49:12 -0000 1.55 @@ -60,6 +60,8 @@ ETK_TREE_ROW_ACTIVATED_SIGNAL, ETK_TREE_ROW_EXPANDED_SIGNAL, ETK_TREE_ROW_COLLAPSED_SIGNAL, + ETK_TREE_ROW_MOUSE_IN_SIGNAL, + ETK_TREE_ROW_MOUSE_OUT_SIGNAL, ETK_TREE_SELECT_ALL_SIGNAL, ETK_TREE_UNSELECT_ALL_SIGNAL, ETK_TREE_NUM_SIGNALS @@ -116,6 +118,8 @@ static void _etk_tree_row_pressed_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _etk_tree_row_clicked_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _etk_tree_row_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _etk_tree_row_mouse_in_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _etk_tree_row_mouse_out_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _etk_tree_focus_cb(Etk_Object *object, void *event, void *data); static void _etk_tree_unfocus_cb(Etk_Object *object, void *event, void *data); static void _etk_tree_key_down_cb(Etk_Object *object, void *event, void *data); @@ -173,6 +177,8 @@ _etk_tree_signals[ETK_TREE_ROW_ACTIVATED_SIGNAL] = etk_signal_new("row_activated", tree_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); _etk_tree_signals[ETK_TREE_ROW_EXPANDED_SIGNAL] = etk_signal_new("row_expaned", tree_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); _etk_tree_signals[ETK_TREE_ROW_COLLAPSED_SIGNAL] = etk_signal_new("row_collapsed", tree_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); + _etk_tree_signals[ETK_TREE_ROW_MOUSE_IN_SIGNAL] = etk_signal_new("row_mouse_in", tree_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); + _etk_tree_signals[ETK_TREE_ROW_MOUSE_OUT_SIGNAL] = etk_signal_new("row_mouse_out", tree_type, -1, etk_marshaller_VOID__POINTER, NULL, NULL); _etk_tree_signals[ETK_TREE_SELECT_ALL_SIGNAL] = etk_signal_new("select_all", tree_type, -1, etk_marshaller_VOID__VOID, NULL, NULL); _etk_tree_signals[ETK_TREE_UNSELECT_ALL_SIGNAL] = etk_signal_new("unselect_all", tree_type, -1, etk_marshaller_VOID__VOID, NULL, NULL); @@ -1922,7 +1928,7 @@ event.modifiers = evas_event->modifiers; event.locks = evas_event->locks; event.flags = evas_event->flags; - event.timestamp = evas_event->timestamp; + event.timestamp = evas_event->timestamp; if(!row_objects->row->tree->dnd_event) { @@ -2005,11 +2011,61 @@ if(ev->buttons & 0x001 && !_etk_tree_drag_started) { - Etk_Drag *drag; + Etk_Widget *drag; _etk_tree_drag_started = ETK_TRUE; drag = (ETK_WIDGET(row_objects->row->tree))->drag; - etk_drag_begin(drag); + etk_drag_begin(ETK_DRAG(drag)); + } +} + +/* Called when the mouse moves into a row */ +static void _etk_tree_row_mouse_in_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Etk_Event_Mouse_In_Out event; + Evas_Event_Mouse_In *evas_event; + Etk_Tree_Row_Objects *row_objects; + + evas_event = event_info; + if (!(row_objects = data) || !row_objects->row) + return; + + event.canvas.x = evas_event->canvas.x; + event.canvas.y = evas_event->canvas.y; + event.widget.x = evas_event->canvas.x - ETK_WIDGET(row_objects->row->tree)->inner_geometry.x; + event.widget.y = evas_event->canvas.y - ETK_WIDGET(row_objects->row->tree)->inner_geometry.y; + event.modifiers = evas_event->modifiers; + event.locks = evas_event->locks; + event.timestamp = evas_event->timestamp; + + if(!_etk_tree_drag_started) + { + etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_MOUSE_IN_SIGNAL], ETK_OBJECT(row_objects->row->tree), NULL, row_objects->row, &event); + } +} + +/* Called when the mouse moves outside a row */ +static void _etk_tree_row_mouse_out_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Etk_Event_Mouse_In_Out event; + Evas_Event_Mouse_Out *evas_event; + Etk_Tree_Row_Objects *row_objects; + + evas_event = event_info; + if (!(row_objects = data) || !row_objects->row) + return; + + event.canvas.x = evas_event->canvas.x; + event.canvas.y = evas_event->canvas.y; + event.widget.x = evas_event->canvas.x - ETK_WIDGET(row_objects->row->tree)->inner_geometry.x; + event.widget.y = evas_event->canvas.y - ETK_WIDGET(row_objects->row->tree)->inner_geometry.y; + event.modifiers = evas_event->modifiers; + event.locks = evas_event->locks; + event.timestamp = evas_event->timestamp; + + if(!_etk_tree_drag_started) + { + etk_signal_emit(_etk_tree_signals[ETK_TREE_ROW_MOUSE_OUT_SIGNAL], ETK_OBJECT(row_objects->row->tree), NULL, row_objects->row, &event); } } @@ -2581,6 +2637,8 @@ evas_object_event_callback_add(new_row_objects->background, EVAS_CALLBACK_MOUSE_DOWN, _etk_tree_row_pressed_cb, new_row_objects); evas_object_event_callback_add(new_row_objects->background, EVAS_CALLBACK_MOUSE_UP, _etk_tree_row_clicked_cb, new_row_objects); evas_object_event_callback_add(new_row_objects->background, EVAS_CALLBACK_MOUSE_MOVE, _etk_tree_row_mouse_move_cb, new_row_objects); + evas_object_event_callback_add(new_row_objects->background, EVAS_CALLBACK_MOUSE_IN, _etk_tree_row_mouse_in_cb, new_row_objects); + evas_object_event_callback_add(new_row_objects->background, EVAS_CALLBACK_MOUSE_OUT, _etk_tree_row_mouse_out_cb, new_row_objects); etk_widget_member_object_add(tree->grid, new_row_objects->background); /* Creates the expander of the row */ ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs