Hi ! As my tiny patch wasn't working with default theme, i explored an other solution :
It uses two pictures ( "data/themes/default/img/list_scroll_up.png" and "data/themes/default/img/list_scroll_down.png" included but ugly :( if someone wants to make better ones ... ), a patch to "data/themes/default/default.edc", and a patch to "src/client/main.c". Simply move the mouse over the pictures, and it scrolls the xsessions list up or down. For other themes, the same can be used for users list as well. Regards, Guillaume B.
list_scroll_up.png
Description: PNG image
list_scroll_down.png
Description: PNG image
--- default.edc.orig 2005-07-12 14:33:31.000000000 +0200 +++ default.edc 2005-07-12 14:25:29.000000000 +0200 @@ -337,6 +337,9 @@ image: "e17_button1.png" LOSSY 90; image: "side_shadow.png" COMP; + + image: "list_scroll_up.png" COMP; + image: "list_scroll_down.png" COMP; image: "default_preview.png" LOSSY 80; } @@ -999,18 +1002,62 @@ visible: 1; rel1 { relative: 0.0 0.0; - offset: 4 4; + offset: 4 14; to: "sessions"; } rel2 { relative: 1.0 1.0; - offset: -5 -5; + offset: -5 -15; to: "sessions"; } color: 255 255 255 0; } } part { + name: "xsessions_scroll_up"; + mouse_events: 1; + clip_to: "sessions_clip"; + description { + state: "default" 0.0; + visible: 1; + rel1 { + relative: 0.0 0.0; + offset: 2 2; + to: "sessions"; + } + rel2 { + relative: 1.0 0.0; + offset: -3 14; + to: "sessions"; + } + image { + normal: "list_scroll_up.png"; + } + } + } + part { + name: "xsessions_scroll_down"; + mouse_events: 1; + clip_to: "sessions_clip"; + description { + state: "default" 0.0; + visible: 1; + rel1 { + relative: 0.0 1.0; + offset: 2 -15; + to: "sessions"; + } + rel2 { + relative: 1.0 1.0; + offset: -3 -3; + to: "sessions"; + } + image { + normal: "list_scroll_down.png"; + } + } + } + part { name: "sessions_side_shadow"; mouse_events: 0; clip_to: "sessions_clip";
--- main.c.orig 2005-07-12 14:32:14.000000000 +0200 +++ main.c 2005-07-12 14:39:48.000000000 +0200 @@ -502,6 +502,41 @@ } } +static void +_container_scroll_up(void *data, Evas_Object * o, const char *emission, + const char *source) +{ + Evas_Object *container = NULL; + + if ((container = data)) + { + esmart_container_scroll_start(container, 1); + } +} + +static void +_container_scroll_down(void *data, Evas_Object * o, const char *emission, + const char *source) +{ + Evas_Object *container = NULL; + + if ((container = data)) + { + esmart_container_scroll_start(container, -1); + } +} + +static void +_container_scroll_stop(void *data, Evas_Object * o, const char *emission, + const char *source) +{ + Evas_Object *container = NULL; + + if ((container = data)) + { + esmart_container_scroll_stop(container); + } +} /** * print the "Help" associated with the app, shows cli args etc * @param argv the argv that was passed from the application @@ -918,6 +953,22 @@ "entrance.xsessions.list.scroller", _container_scroll, session->session_container); + edje_object_signal_callback_add(edje, "mouse,in", + "xsessions_scroll_up", + _container_mouse_scroll_up, + session->session_container); + edje_object_signal_callback_add(edje, "mouse,in", + "xsessions_scroll_down", + _container_mouse_scroll_down, + session->session_container); + edje_object_signal_callback_add(edje, "mouse,out", + "xsessions_scroll_up", + _container_mouse_scroll_stop, + session->session_container); + edje_object_signal_callback_add(edje, "mouse,out", + "xsessions_scroll_down", + _container_mouse_scroll_stop, + session->session_container); } /* See if we have an EntranceUserList part, tell the session to load the user list if it exists. */ @@ -935,6 +986,22 @@ "entrance.users.list.scroller", _container_scroll, session->user_container); + edje_object_signal_callback_add(edje, "mouse,in", + "users_scroll_up", + _container_mouse_scroll_up, + session->user_container); + edje_object_signal_callback_add(edje, "mouse,in", + "users_scroll_down", + _container_mouse_scroll_down, + session->user_container); + edje_object_signal_callback_add(edje, "mouse,out", + "users_scroll_up", + _container_mouse_scroll_stop, + session->user_container); + edje_object_signal_callback_add(edje, "mouse,out", + "users_scroll_down", + _container_mouse_scroll_stop, + session->user_container); } /**