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.

Attachment: list_scroll_up.png
Description: PNG image

Attachment: 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);
       }
 
       /**

Reply via email to