Enlightenment CVS committal

Author  : moom
Project : e17
Module  : proto

Dir     : e17/proto/etk/src/lib


Modified Files:
        etk_canvas.c etk_colorpicker.c etk_colorpicker.h etk_range.c 
        etk_range.h etk_slider.c 


Log Message:
* [Etk_Range] Do not use an Ecore_Job anymore to emit the 
"value_changed" cb
* [Etk_Slider] Only change the value on the "drag" signal of Edje
* [Etk_Colopicker] Fix all the known bugs. It is now almost finished! :)


===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_canvas.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- etk_canvas.c        19 May 2006 14:34:09 -0000      1.11
+++ etk_canvas.c        20 May 2006 15:59:17 -0000      1.12
@@ -47,7 +47,7 @@
 }
 
 /**
- * @brief Adds an evas object to the canvas. The object will be move to the 
top left corner of the canvas,
+ * @brief Adds an evas object to the canvas. The object will be moved to the 
top left corner of the canvas,
  * and will be resized to 32x32. You can then use any function of evas to 
control the object
  * @param canvas a canvas
  * @param object the object to add
@@ -76,7 +76,7 @@
 }
 
 /**
- * @brief Removes an evas object from the canvas. The evas object will be also 
hidden
+ * @brief Removes an evas object from the canvas. The evas object will also be 
automatically hidden
  * @param canvas a canvas
  * @param object the evas object to remove
  */
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_colorpicker.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -3 -r1.14 -r1.15
--- etk_colorpicker.c   19 May 2006 14:17:31 -0000      1.14
+++ etk_colorpicker.c   20 May 2006 15:59:17 -0000      1.15
@@ -17,12 +17,12 @@
  * @{
  */
 
-typedef struct Etk_Colorpicker_Picker_Data
+typedef struct Etk_Colorpicker_Picker_SD
 {
    Evas_List *objects;
    Etk_Colorpicker *cp;
    void (*move_resize)(Etk_Colorpicker *cp, int x, int y, int w, int h);
-} Etk_Colorpicker_Picker_Data;
+} Etk_Colorpicker_Picker_SD;
 
 enum Etk_Combobox_Signal_Id
 {
@@ -36,6 +36,7 @@
 };
 
 static void _etk_colorpicker_constructor(Etk_Colorpicker *cp);
+static void _etk_colorpicker_destructor(Etk_Colorpicker *cp);
 static void _etk_colorpicker_property_set(Etk_Object *object, int property_id, 
Etk_Property_Value *value);
 static void _etk_colorpicker_property_get(Etk_Object *object, int property_id, 
Etk_Property_Value *value);
 static void _etk_colorpicker_size_request(Etk_Widget *widget, Etk_Size *size);
@@ -68,9 +69,10 @@
 
 static void _etk_colorpicker_sp_move_resize(Etk_Colorpicker *cp, int x, int y, 
int w, int h);
 static void _etk_colorpicker_vp_move_resize(Etk_Colorpicker *cp, int x, int y, 
int w, int h);
-static void _etk_colorpicker_sp_cursor_move_resize(Etk_Colorpicker *cp);
-static void _etk_colorpicker_vp_cursor_move_resize(Etk_Colorpicker *cp);
+static void _etk_colorpicker_sp_cursor_replace(Etk_Colorpicker *cp);
+static void _etk_colorpicker_vp_cursor_replace(Etk_Colorpicker *cp);
 
+static void _etk_colorpicker_sp_cursor_move(Etk_Colorpicker *cp, float 
xpercent, float ypercent);
 static void _etk_colorpicker_update(Etk_Colorpicker *cp, Etk_Bool sp_image, 
Etk_Bool sp_cursor, Etk_Bool vp_image, Etk_Bool vp_cursor);
 static void _etk_colorpicker_sp_image_update(Etk_Colorpicker *cp);
 static void _etk_colorpicker_sp_cursor_update(Etk_Colorpicker *cp);
@@ -81,9 +83,6 @@
 static void _etk_colorpicker_vp_color_get(Etk_Colorpicker *cp, int i, int *r, 
int *g, int *b);
 static void _etk_colorpicker_color_calc(Etk_Colorpicker_Mode mode, float 
sp_xpos, float sp_ypos, float vp_pos, int *r, int *g, int *b);
 
-static void _etk_colorpicker_hsv_to_rgb(float h, float s, float v, int *r, int 
*g, int *b);
-static void _etk_colorpicker_rgb_to_hsv(int r, int g, int b, float *h, float 
*s, float *v);
-
 static Evas_Smart *_etk_colorpicker_picker_smart = NULL;
 static int _etk_colorpicker_picker_smart_use = 0;
 static Etk_Signal *_etk_colorpicker_signals[ETK_CP_NUM_SIGNALS];
@@ -106,7 +105,7 @@
    if (!cp_type)
    {
       cp_type = etk_type_new("Etk_Colorpicker", ETK_WIDGET_TYPE, 
sizeof(Etk_Colorpicker),
-         ETK_CONSTRUCTOR(_etk_colorpicker_constructor), NULL);
+         ETK_CONSTRUCTOR(_etk_colorpicker_constructor), 
ETK_DESTRUCTOR(_etk_colorpicker_destructor));
    
       _etk_colorpicker_signals[ETK_CP_COLOR_CHANGED_SIGNAL] = 
etk_signal_new("color_changed",
          cp_type, -1, etk_marshaller_VOID__VOID, NULL, NULL);
@@ -137,19 +136,64 @@
  */
 void etk_colorpicker_mode_set(Etk_Colorpicker *cp, Etk_Colorpicker_Mode mode)
 {
+   float value;
+   int i;
+   
    if (!cp || (cp->mode == mode))
       return;
    
-   cp->mode = mode;
-   etk_colorpicker_current_color_set(cp, cp->current_color);
+   switch (mode)
+   {
+      case ETK_COLORPICKER_H:
+         cp->sp_xcomponent = ETK_COLORPICKER_V;
+         cp->sp_ycomponent = ETK_COLORPICKER_S;
+         break;
+      case ETK_COLORPICKER_S:
+         cp->sp_xcomponent = ETK_COLORPICKER_V;
+         cp->sp_ycomponent = ETK_COLORPICKER_H;
+         break;
+      case ETK_COLORPICKER_V:
+         cp->sp_xcomponent = ETK_COLORPICKER_S;
+         cp->sp_ycomponent = ETK_COLORPICKER_H;
+         break;
+      case ETK_COLORPICKER_R:
+         cp->sp_xcomponent = ETK_COLORPICKER_B;
+         cp->sp_ycomponent = ETK_COLORPICKER_G;
+         break;
+      case ETK_COLORPICKER_G:
+         cp->sp_xcomponent = ETK_COLORPICKER_B;
+         cp->sp_ycomponent = ETK_COLORPICKER_R;
+         break;
+      case ETK_COLORPICKER_B:
+         cp->sp_xcomponent = ETK_COLORPICKER_G;
+         cp->sp_ycomponent = ETK_COLORPICKER_R;
+         break;
+      default:
+         break;
+   }
+   
+   
+   /* Update of the colorpicker */
+   for (i = (mode / 3) * 3; i < ((mode / 3) + 1) * 3; i++)
+   {
+      value = etk_range_value_get(ETK_RANGE(cp->sliders[i]));
+      if (i == mode)
+         cp->vp_pos = value / cp->sliders_max_value[i];
+      else if (i == cp->sp_xcomponent)
+         cp->sp_xpos = value / cp->sliders_max_value[i];
+      else if (i == cp->sp_ycomponent)
+         cp->sp_ypos = value / cp->sliders_max_value[i];
+   }
+   _etk_colorpicker_update(cp, ETK_TRUE, ETK_TRUE, ETK_TRUE, ETK_TRUE);
    
+   cp->mode = mode;
    etk_object_notify(ETK_OBJECT(cp), "mode");
 }
 
 /**
- * @brief Gets the current color mode of colorpicker
+ * @brief Gets the current color mode of the colorpicker
  * @param cp a colorpicker
- * @return Returns the current color mode of colorpicker
+ * @return Returns the current color mode of the colorpicker
  */
 Etk_Colorpicker_Mode etk_colorpicker_mode_get(Etk_Colorpicker *cp)
 {
@@ -165,54 +209,14 @@
  */
 void etk_colorpicker_current_color_set(Etk_Colorpicker *cp, Etk_Color color)
 {
-   int r, g, b;
-   float h, s, v;
-   
    if (cp->current_color.r == color.r && cp->current_color.g == color.g && 
cp->current_color.b == color.b)
       return;
    
-   r = color.r;
-   g = color.g;
-   b = color.b;
-   _etk_colorpicker_rgb_to_hsv(r, g, b, &h, &s, &v);
-   
-   switch (cp->mode)
-   {
-      case ETK_COLORPICKER_H:
-         cp->sp_xpos = v;
-         cp->sp_ypos = s;
-         cp->vp_pos = h / 360.0;
-         break;
-      case ETK_COLORPICKER_S:
-         cp->sp_xpos = v;
-         cp->sp_ypos = h / 360.0;
-         cp->vp_pos = s;
-         break;
-      case ETK_COLORPICKER_V:
-         cp->sp_xpos = s;
-         cp->sp_ypos = h / 360.0;
-         cp->vp_pos = v;
-         break;
-      case ETK_COLORPICKER_R:
-         cp->sp_xpos = b / 255.0;
-         cp->sp_ypos = g / 255.0;
-         cp->vp_pos = r / 255.0;
-         break;
-      case ETK_COLORPICKER_G:
-         cp->sp_xpos = b / 255.0;
-         cp->sp_ypos = r / 255.0;
-         cp->vp_pos = g / 255.0;
-         break;
-      case ETK_COLORPICKER_B:
-         cp->sp_xpos = g / 255.0;
-         cp->sp_ypos = r / 255.0;
-         cp->vp_pos = b / 255.0;
-         break;
-      default:
-         break;
-   }
-   
-   _etk_colorpicker_update(cp, ETK_TRUE, ETK_TRUE, ETK_TRUE, ETK_TRUE);
+   cp->ignore_value_changed = ETK_TRUE;
+   etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_R]), color.r);
+   etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_G]), color.g);
+   cp->ignore_value_changed = ETK_FALSE;
+   etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_B]), color.b);
 }
 
 /**
@@ -245,13 +249,18 @@
 static void _etk_colorpicker_constructor(Etk_Colorpicker *cp)
 {
    Etk_Widget *cp_widget;
-   char *labels[6] = {"H", "S", "V", "R", "G", "B"};
+   char *labels[6] = { "H", "S", "V", "R", "G", "B" };
+   float values[6] = { 360.0, 1.0, 1.0, 255.0, 255.0, 255.0 };
+   float steps[6] = { 1.0, 0.01, 0.01, 1.0, 1.0, 1.0 };
    int i;
 
    if (!(cp_widget = ETK_WIDGET(cp)))
       return;
    
    cp->mode = ETK_COLORPICKER_H;
+   cp->sp_xcomponent = ETK_COLORPICKER_V;
+   cp->sp_ycomponent = ETK_COLORPICKER_S;
+   
    cp->current_color.r = 0;
    cp->current_color.g = 0;
    cp->current_color.b = 0;
@@ -281,6 +290,8 @@
    cp->vp_image_needs_update = ETK_FALSE;
    cp->vp_cursor_needs_update = ETK_FALSE;
    cp->sliders_need_update = ETK_FALSE;
+   cp->ignore_value_changed = ETK_FALSE;
+   cp->emit_signal = ETK_TRUE;
    
    cp->table = etk_table_new(2, 6, ETK_FALSE);
    etk_widget_parent_set(cp->table, cp_widget);
@@ -298,27 +309,13 @@
       etk_widget_visibility_locked_set(cp->radios[i], ETK_TRUE);
       etk_widget_show(cp->radios[i]);
       
-      switch (i)
-      {
-         case ETK_COLORPICKER_H:
-            cp->sliders[i] = etk_hslider_new(0.0, 360.0, 0.0, 1.0, 5.0);
-            break;
-         case ETK_COLORPICKER_S:
-         case ETK_COLORPICKER_V:
-            cp->sliders[i] = etk_hslider_new(0.0, 1.0, 0.0, 0.01, 0.05);
-            break;
-         case ETK_COLORPICKER_R:
-         case ETK_COLORPICKER_G:
-         case ETK_COLORPICKER_B:
-            cp->sliders[i] = etk_hslider_new(0.0, 255.0, 0.0, 1.0, 5.0);
-            break;
-         default:
-            break;
-      }
+      cp->sliders[i] = etk_hslider_new(0.0, values[i], 0.0, steps[i], steps[i] 
* 5);
       etk_table_attach(ETK_TABLE(cp->table), cp->sliders[i], 1, 1, i, i,
          0, 0, ETK_FILL_POLICY_HFILL | ETK_FILL_POLICY_HEXPAND | 
ETK_FILL_POLICY_VEXPAND);
       etk_widget_visibility_locked_set(cp->sliders[i], ETK_TRUE);
       etk_widget_show(cp->sliders[i]);
+      
+      cp->sliders_max_value[i] = values[i];
       cp->sliders_image[i] = NULL;
       
       etk_signal_connect("toggled", ETK_OBJECT(cp->radios[i]),
@@ -338,6 +335,18 @@
    etk_signal_connect("unrealize", ETK_OBJECT(cp), 
ETK_CALLBACK(_etk_colorpicker_unrealize_cb), NULL);
 }
 
+/* Destroys the colorpicker */
+static void _etk_colorpicker_destructor(Etk_Colorpicker *cp)
+{
+   int i;
+   
+   if (!cp)
+      return;
+   
+   for (i = 0; i < 6; i++)
+      etk_signal_disconnect("toggled", ETK_OBJECT(cp->radios[i]), 
ETK_CALLBACK(_etk_colorpicker_radio_toggled_cb));
+}
+
 /* Sets the property whose id is "property_id" to the value "value" */
 static void _etk_colorpicker_property_set(Etk_Object *object, int property_id, 
Etk_Property_Value *value)
 {
@@ -409,8 +418,8 @@
    /* Then, moves and resizes the objects */
    evas_object_move(cp->picker_theme_object, geometry.x, geometry.y);
    evas_object_resize(cp->picker_theme_object, (geometry.w / 2) - 5, 
geometry.h);
-   _etk_colorpicker_sp_cursor_move_resize(cp);
-   _etk_colorpicker_vp_cursor_move_resize(cp);
+   _etk_colorpicker_sp_cursor_replace(cp);
+   _etk_colorpicker_vp_cursor_replace(cp);
    
    child_geometry.x = geometry.x + (geometry.w / 2);
    child_geometry.y = geometry.y;
@@ -435,7 +444,7 @@
 static void _etk_colorpicker_realize_cb(Etk_Object *object, void *data)
 {
    Etk_Colorpicker *cp;
-   Etk_Colorpicker_Picker_Data *picker_data;
+   Etk_Colorpicker_Picker_SD *picker_sd;
    Evas *evas;
    
    if (!(cp = ETK_COLORPICKER(object)) || !(evas = 
etk_widget_toplevel_evas_get(ETK_WIDGET(cp))))
@@ -449,40 +458,40 @@
    /* Square picker objects */
    cp->sp_object = _etk_colorpicker_picker_object_add(evas, cp, 
_etk_colorpicker_sp_move_resize);
    edje_object_part_swallow(cp->picker_theme_object, "square_picker", 
cp->sp_object);
-   picker_data = evas_object_smart_data_get(cp->sp_object);
+   picker_sd = evas_object_smart_data_get(cp->sp_object);
    
    cp->sp_image = evas_object_image_add(evas);
    evas_object_image_alpha_set(cp->sp_image, 0);
    evas_object_image_size_set(cp->sp_image, cp->sp_res, cp->sp_res);
-   picker_data->objects = evas_list_append(picker_data->objects, cp->sp_image);
+   picker_sd->objects = evas_list_append(picker_sd->objects, cp->sp_image);
    
    cp->sp_hcursor = evas_object_image_add(evas);
    evas_object_image_alpha_set(cp->sp_hcursor, 0);
    evas_object_image_size_set(cp->sp_hcursor, cp->sp_res, 1);
    evas_object_pass_events_set(cp->sp_hcursor, 1);
-   picker_data->objects = evas_list_append(picker_data->objects, 
cp->sp_hcursor);
+   picker_sd->objects = evas_list_append(picker_sd->objects, cp->sp_hcursor);
    
    cp->sp_vcursor = evas_object_image_add(evas);
    evas_object_image_alpha_set(cp->sp_vcursor, 0);
    evas_object_image_size_set(cp->sp_vcursor, 1, cp->sp_res);
    evas_object_pass_events_set(cp->sp_vcursor, 1);
-   picker_data->objects = evas_list_append(picker_data->objects, 
cp->sp_vcursor);
+   picker_sd->objects = evas_list_append(picker_sd->objects, cp->sp_vcursor);
    
    evas_object_show(cp->sp_object);
    
    /* Vertical picker objects */
    cp->vp_object = _etk_colorpicker_picker_object_add(evas, cp, 
_etk_colorpicker_vp_move_resize);
    edje_object_part_swallow(cp->picker_theme_object, "vertical_picker", 
cp->vp_object);
-   picker_data = evas_object_smart_data_get(cp->vp_object);
+   picker_sd = evas_object_smart_data_get(cp->vp_object);
    
    cp->vp_image = evas_object_image_add(evas);
    evas_object_image_alpha_set(cp->vp_image, 0);
    evas_object_image_size_set(cp->vp_image, 1, cp->vp_res);
-   picker_data->objects = evas_list_append(picker_data->objects, cp->vp_image);
+   picker_sd->objects = evas_list_append(picker_sd->objects, cp->vp_image);
    
    cp->vp_cursor = evas_object_rectangle_add(evas);
    evas_object_pass_events_set(cp->vp_cursor, 1);
-   picker_data->objects = evas_list_append(picker_data->objects, 
cp->vp_cursor);
+   picker_sd->objects = evas_list_append(picker_sd->objects, cp->vp_cursor);
    
    evas_object_show(cp->vp_object);
    
@@ -537,6 +546,7 @@
          evas_object_show(cp->sliders_image[i]);
          evas_object_event_callback_add(cp->sliders_image[i], 
EVAS_CALLBACK_RESIZE,
             _etk_colorpicker_slider_image_resize_cb, NULL);
+         /* TODO: swallow */
          etk_widget_member_object_add(slider, cp->sliders_image[i]);
          etk_widget_theme_object_swallow(slider, "slider_image", 
cp->sliders_image[i]);
          
@@ -570,54 +580,98 @@
    Etk_Widget *slider;
    Etk_Colorpicker *cp;
    Etk_Color color;
-   int r, g, b;
    float h, s, v;
    int i;
    
    if (!(slider = ETK_WIDGET(object)) || !(cp = ETK_COLORPICKER(data)))
       return;
-   if (cp->sp_dragging || cp->vp_dragging)
-      return;
-   
-   r = cp->current_color.r;
-   g = cp->current_color.g;
-   b = cp->current_color.b;
-   _etk_colorpicker_rgb_to_hsv(r, g, b, &h, &s, &v);
    
    for (i = 0; i < 6; i++)
    {
       if (cp->sliders[i] == slider)
       {
+         /* First, we update the position of the cursors */
+         if (i == cp->mode)
+            cp->vp_pos = value / cp->sliders_max_value[i];
+         else if (i == cp->sp_xcomponent)
+            cp->sp_xpos = value / cp->sliders_max_value[i];
+         else if (i == cp->sp_ycomponent)
+            cp->sp_ypos = value / cp->sliders_max_value[i];
+         
+         if (cp->ignore_value_changed)
+            return;
+         
+         /* Then, we update the values of the other sliders */
          switch (i)
          {
             case ETK_COLORPICKER_H:
-               _etk_colorpicker_hsv_to_rgb(value, s, v, &color.r, &color.g, 
&color.b);
+               h = value;
+               s = 
etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_S]));
+               v = 
etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_V]));
+               evas_color_hsv_to_rgb(h, s, v, &color.r, &color.g, &color.b);
                break;
             case ETK_COLORPICKER_S:
-               _etk_colorpicker_hsv_to_rgb(h, value, v, &color.r, &color.g, 
&color.b);
+               h = 
etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_H]));
+               s = value;
+               v = 
etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_V]));
+               evas_color_hsv_to_rgb(h, s, v, &color.r, &color.g, &color.b);
                break;
             case ETK_COLORPICKER_V:
-               _etk_colorpicker_hsv_to_rgb(h, s, value, &color.r, &color.g, 
&color.b);
+               h = 
etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_H]));
+               s = 
etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_S]));
+               v = value;
+               evas_color_hsv_to_rgb(h, s, v, &color.r, &color.g, &color.b);
                break;
             case ETK_COLORPICKER_R:
                color.r = (int)value;
-               color.g = g;
-               color.b = b;
+               color.g = 
(int)etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_G]));
+               color.b = 
(int)etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_B]));
                break;
             case ETK_COLORPICKER_G:
-               color.r = r;
+               color.r = 
(int)etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_R]));
                color.g = (int)value;
-               color.b = b;
+               color.b = 
(int)etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_B]));
                break;
             case ETK_COLORPICKER_B:
-               color.r = r;
-               color.g = g;
+               color.r = 
(int)etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_R]));
+               color.g = 
(int)etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_G]));
                color.b = (int)value;
                break;
             default:
                break;
          }
-         etk_colorpicker_current_color_set(cp, color);
+         
+         if (i == ETK_COLORPICKER_H || i == ETK_COLORPICKER_S || i == 
ETK_COLORPICKER_V)
+         {
+            cp->ignore_value_changed = ETK_TRUE;
+            etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_R]), 
color.r);
+            etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_G]), 
color.g);
+            etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_B]), 
color.b);
+            cp->ignore_value_changed = ETK_FALSE;
+         }
+         else
+         {
+            cp->ignore_value_changed = ETK_TRUE;
+            evas_color_rgb_to_hsv(color.r, color.g, color.b, &h, &s, &v);
+            etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_H]), h);
+            etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_S]), s);
+            etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_V]), v);
+            cp->ignore_value_changed = ETK_FALSE;
+         }
+         
+         /* And then, we update the current color and the colorpicker */
+         if (color.r != cp->current_color.r || color.g != cp->current_color.g 
|| color.b != cp->current_color.b)
+         {
+            cp->current_color.r = color.r;
+            cp->current_color.g = color.g;
+            cp->current_color.b = color.b;
+            if (cp->emit_signal)
+               
etk_signal_emit(_etk_colorpicker_signals[ETK_CP_COLOR_CHANGED_SIGNAL], 
ETK_OBJECT(cp), NULL);
+         }
+         
+         /* TODO: just update what need to do */
+         _etk_colorpicker_update(cp, ETK_TRUE, ETK_TRUE, ETK_TRUE, ETK_TRUE);
+         
          return;
       }
    }
@@ -651,15 +705,16 @@
    Etk_Colorpicker *cp;
    Evas_Event_Mouse_Down *event;
    int x, y, w, h;
+   float xpercent, ypercent;
    
    if (!(cp = ETK_COLORPICKER(data)) || !(event = event_info))
       return;
    
    evas_object_geometry_get(cp->sp_image, &x, &y, &w, &h);
-   cp->sp_xpos = ETK_CLAMP((float)(event->canvas.x - x) / w, 0.0, 1.0);
-   cp->sp_ypos = 1.0 - ETK_CLAMP((float)(event->canvas.y - y) / h, 0.0, 1.0);
-   _etk_colorpicker_update(cp, ETK_FALSE, ETK_TRUE, ETK_FALSE, ETK_FALSE);
+   xpercent = ETK_CLAMP((float)(event->canvas.x - x) / w, 0.0, 1.0);
+   ypercent = 1.0 - ETK_CLAMP((float)(event->canvas.y - y) / h, 0.0, 1.0);
    
+   _etk_colorpicker_sp_cursor_move(cp, xpercent, ypercent);
    cp->sp_dragging = ETK_TRUE;
 }
 
@@ -679,14 +734,16 @@
    Etk_Colorpicker *cp;
    Evas_Event_Mouse_Move *event;
    int x, y, w, h;
+   float xpercent, ypercent;
    
    if (!(cp = ETK_COLORPICKER(data)) || !(event = event_info) || 
!cp->sp_dragging)
       return;
    
    evas_object_geometry_get(cp->sp_image, &x, &y, &w, &h);
-   cp->sp_xpos = ETK_CLAMP((float)(event->cur.canvas.x - x) / w, 0.0, 1.0);
-   cp->sp_ypos = 1.0 - ETK_CLAMP((float)(event->cur.canvas.y - y) / h, 0.0, 
1.0);
-   _etk_colorpicker_update(cp, ETK_FALSE, ETK_TRUE, ETK_FALSE, ETK_FALSE);
+   xpercent = ETK_CLAMP((float)(event->cur.canvas.x - x) / w, 0.0, 1.0);
+   ypercent = 1.0 - ETK_CLAMP((float)(event->cur.canvas.y - y) / h, 0.0, 1.0);
+   
+   _etk_colorpicker_sp_cursor_move(cp, xpercent, ypercent);
 }
 
 /* Called when the vertical picker is pressed by the mouse */
@@ -695,14 +752,15 @@
    Etk_Colorpicker *cp;
    Evas_Event_Mouse_Down *event;
    int y, h;
+   float percent;
    
    if (!(cp = ETK_COLORPICKER(data)) || !(event = event_info))
       return;
    
    evas_object_geometry_get(cp->vp_image, NULL, &y, NULL, &h);
-   cp->vp_pos = 1.0 - ETK_CLAMP((float)(event->canvas.y - y) / h, 0.0, 1.0);
-   _etk_colorpicker_update(cp, ETK_TRUE, ETK_TRUE, ETK_TRUE, ETK_TRUE);
+   percent = 1.0 - ETK_CLAMP((float)(event->canvas.y - y) / h, 0.0, 1.0);
    
+   etk_range_value_set(ETK_RANGE(cp->sliders[cp->mode]), percent * 
cp->sliders_max_value[cp->mode]);
    cp->vp_dragging = ETK_TRUE;
 }
 
@@ -722,13 +780,15 @@
    Etk_Colorpicker *cp;
    Evas_Event_Mouse_Move *event;
    int y, h;
+   float percent;
    
    if (!(cp = ETK_COLORPICKER(data)) || !(event = event_info) || 
!cp->vp_dragging)
       return;
    
    evas_object_geometry_get(cp->vp_image, NULL, &y, NULL, &h);
-   cp->vp_pos = 1.0 - ETK_CLAMP((float)(event->cur.canvas.y - y) / h, 0.0, 
1.0);
-   _etk_colorpicker_update(cp, ETK_TRUE, ETK_TRUE, ETK_TRUE, ETK_TRUE);
+   percent = 1.0 - ETK_CLAMP((float)(event->cur.canvas.y - y) / h, 0.0, 1.0);
+   
+   etk_range_value_set(ETK_RANGE(cp->sliders[cp->mode]), percent * 
cp->sliders_max_value[cp->mode]);
 }
 
 /* Called when the image of a slider of the colorpicker is resized */
@@ -753,7 +813,7 @@
 static Evas_Object *_etk_colorpicker_picker_object_add(Evas *evas, 
Etk_Colorpicker *cp, void (*move_resize)(Etk_Colorpicker *cp, int x, int y, int 
w, int h))
 {
    Evas_Object *obj;
-   Etk_Colorpicker_Picker_Data *picker_data;
+   Etk_Colorpicker_Picker_SD *picker_sd;
    
    if (!evas || !cp)
       return NULL;
@@ -781,9 +841,9 @@
    _etk_colorpicker_picker_smart_use++;
    
    obj = evas_object_smart_add(evas, _etk_colorpicker_picker_smart);
-   picker_data = evas_object_smart_data_get(obj);
-   picker_data->cp = cp;
-   picker_data->move_resize = move_resize;
+   picker_sd = evas_object_smart_data_get(obj);
+   picker_sd->cp = cp;
+   picker_sd->move_resize = move_resize;
    
    return obj;
 }
@@ -791,112 +851,112 @@
 /* Initializes the new picker object */
 static void _etk_colorpicker_picker_smart_add(Evas_Object *obj)
 {
-   Etk_Colorpicker_Picker_Data *picker_data;
+   Etk_Colorpicker_Picker_SD *picker_sd;
    Evas *evas;
    
    if (!obj || !(evas = evas_object_evas_get(obj)))
       return;
    
-   picker_data = malloc(sizeof(Etk_Colorpicker_Picker_Data));
-   picker_data->objects = NULL;
-   picker_data->cp = NULL;
-   picker_data->move_resize = NULL;
-   evas_object_smart_data_set(obj, picker_data);
+   picker_sd = malloc(sizeof(Etk_Colorpicker_Picker_SD));
+   picker_sd->objects = NULL;
+   picker_sd->cp = NULL;
+   picker_sd->move_resize = NULL;
+   evas_object_smart_data_set(obj, picker_sd);
 }
 
 /* Destroys the picker object */
 static void _etk_colorpicker_picker_smart_del(Evas_Object *obj)
 {
-   Etk_Colorpicker_Picker_Data *picker_data;
+   Etk_Colorpicker_Picker_SD *picker_sd;
    
-   if (!obj || !(picker_data = evas_object_smart_data_get(obj)))
+   if (!obj || !(picker_sd = evas_object_smart_data_get(obj)))
       return;
 
-   while (picker_data->objects)
+   while (picker_sd->objects)
    {
-      evas_object_del(picker_data->objects->data);
-      picker_data->objects = evas_list_remove_list(picker_data->objects, 
picker_data->objects);
+      evas_object_del(picker_sd->objects->data);
+      picker_sd->objects = evas_list_remove_list(picker_sd->objects, 
picker_sd->objects);
    }
-   free(picker_data);
+   free(picker_sd);
 }
 
 /* Moves the picker object */
 static void _etk_colorpicker_picker_smart_move(Evas_Object *obj, Evas_Coord x, 
Evas_Coord y)
 {
-   Etk_Colorpicker_Picker_Data *picker_data;
+   Etk_Colorpicker_Picker_SD *picker_sd;
    Evas_Coord w, h;
    
-   if (!obj || !(picker_data = evas_object_smart_data_get(obj)))
+   if (!obj || !(picker_sd = evas_object_smart_data_get(obj)))
       return;
 
    evas_object_geometry_get(obj, NULL, NULL, &w, &h);
-   if (picker_data->cp && picker_data->move_resize)
-      picker_data->move_resize(picker_data->cp, x, y, w, h);
+   if (picker_sd->cp && picker_sd->move_resize)
+      picker_sd->move_resize(picker_sd->cp, x, y, w, h);
 }
 
 /* Resizes the picker object */
 static void _etk_colorpicker_picker_smart_resize(Evas_Object *obj, Evas_Coord 
w, Evas_Coord h)
 {
-   Etk_Colorpicker_Picker_Data *picker_data;
+   Etk_Colorpicker_Picker_SD *picker_sd;
    Evas_Coord x, y;
    
-   if (!obj || !(picker_data = evas_object_smart_data_get(obj)))
+   if (!obj || !(picker_sd = evas_object_smart_data_get(obj)))
       return;
 
    evas_object_geometry_get(obj, &x, &y, NULL, NULL);
-   if (picker_data->cp && picker_data->move_resize)
-      picker_data->move_resize(picker_data->cp, x, y, w, h);
+   if (picker_sd->cp && picker_sd->move_resize)
+      picker_sd->move_resize(picker_sd->cp, x, y, w, h);
 }
 
 /* Shows the picker object */
 static void _etk_colorpicker_picker_smart_show(Evas_Object *obj)
 {
-   Etk_Colorpicker_Picker_Data *picker_data;
+   Etk_Colorpicker_Picker_SD *picker_sd;
    Evas_List *l;
    
-   if (!obj || !(picker_data = evas_object_smart_data_get(obj)))
+   if (!obj || !(picker_sd = evas_object_smart_data_get(obj)))
       return;
 
-   for (l = picker_data->objects; l; l = l->next)
+   for (l = picker_sd->objects; l; l = l->next)
       evas_object_show(l->data);
 }
 
 /* Hides the picker object */
 static void _etk_colorpicker_picker_smart_hide(Evas_Object *obj)
 {
-   Etk_Colorpicker_Picker_Data *picker_data;
+   Etk_Colorpicker_Picker_SD *picker_sd;
    Evas_List *l;
    
-   if (!obj || !(picker_data = evas_object_smart_data_get(obj)))
+   if (!obj || !(picker_sd = evas_object_smart_data_get(obj)))
       return;
 
-   for (l = picker_data->objects; l; l = l->next)
+   for (l = picker_sd->objects; l; l = l->next)
       evas_object_hide(l->data);
 }
 
 /* Sets the clip of the picker object */
 static void _etk_colorpicker_picker_smart_clip_set(Evas_Object *obj, 
Evas_Object *clip)
 {
-   Etk_Colorpicker_Picker_Data *picker_data;
+   Etk_Colorpicker_Picker_SD *picker_sd;
    Evas_List *l;
    
-   if (!obj || !(picker_data = evas_object_smart_data_get(obj)))
+   if (!obj || !(picker_sd = evas_object_smart_data_get(obj)))
       return;
 
-   for (l = picker_data->objects; l; l = l->next)
+   for (l = picker_sd->objects; l; l = l->next)
       evas_object_clip_set(l->data, clip);
 }
 
 /* Unsets the clip of the picker object */
 static void _etk_colorpicker_picker_smart_clip_unset(Evas_Object *obj)
 {
-   Etk_Colorpicker_Picker_Data *picker_data;
+   Etk_Colorpicker_Picker_SD *picker_sd;
    Evas_List *l;
    
-   if (!obj || !(picker_data = evas_object_smart_data_get(obj)))
+   if (!obj || !(picker_sd = evas_object_smart_data_get(obj)))
       return;
 
-   for (l = picker_data->objects; l; l = l->next)
+   for (l = picker_sd->objects; l; l = l->next)
       evas_object_clip_unset(l->data);
 }
 
@@ -916,7 +976,7 @@
    evas_object_resize(cp->sp_image, w, h);
    evas_object_image_fill_set(cp->sp_image, 0, 0, w, h);
    
-   _etk_colorpicker_sp_cursor_move_resize(cp);
+   _etk_colorpicker_sp_cursor_replace(cp);
 }
 
 /* Moves and resizes the vertical picker */
@@ -929,11 +989,11 @@
    evas_object_resize(cp->vp_image, w, h);
    evas_object_image_fill_set(cp->vp_image, 0, 0, w, h);
    
-   _etk_colorpicker_vp_cursor_move_resize(cp);
+   _etk_colorpicker_vp_cursor_replace(cp);
 }
 
-/* Moves and resizes the cursor of the square picker to the correct 
position/size */
-static void _etk_colorpicker_sp_cursor_move_resize(Etk_Colorpicker *cp)
+/* Updates the position and the size of the cursors of the square picker */
+static void _etk_colorpicker_sp_cursor_replace(Etk_Colorpicker *cp)
 {
    int x, y, w, h;
    
@@ -951,8 +1011,8 @@
    evas_object_image_fill_set(cp->sp_vcursor, 0, 0, 1, h);
 }
 
-/* Moves and resizes the cursor of the vertical picker to the correct 
position/size */
-static void _etk_colorpicker_vp_cursor_move_resize(Etk_Colorpicker *cp)
+/* Updates the position and the size of the cursor of the vertical picker */
+static void _etk_colorpicker_vp_cursor_replace(Etk_Colorpicker *cp)
 {
    int x, y, w, h;
    
@@ -964,12 +1024,21 @@
    evas_object_resize(cp->vp_cursor, w, 1);
 }
 
+/* Changes the values of the corresponding sliders: it will move the cursor of 
the square picker */
+static void _etk_colorpicker_sp_cursor_move(Etk_Colorpicker *cp, float 
xpercent, float ypercent)
+{
+   if (!cp)
+      return;
+   
+   cp->emit_signal = ETK_FALSE;
+   etk_range_value_set(ETK_RANGE(cp->sliders[cp->sp_xcomponent]), xpercent * 
cp->sliders_max_value[cp->sp_xcomponent]);
+   cp->emit_signal = ETK_TRUE;
+   etk_range_value_set(ETK_RANGE(cp->sliders[cp->sp_ycomponent]), ypercent * 
cp->sliders_max_value[cp->sp_ycomponent]);
+}
+
 /* Updates of the colorpicker */ 
 static void _etk_colorpicker_update(Etk_Colorpicker *cp, Etk_Bool sp_image, 
Etk_Bool sp_cursor, Etk_Bool vp_image, Etk_Bool vp_cursor)
 {
-   int r, g, b;
-   float h, s, v;
-   
    if (!cp)
       return;
    
@@ -979,26 +1048,6 @@
    cp->vp_cursor_needs_update |= vp_cursor;
    cp->sliders_need_update = ETK_TRUE;
    
-   /* Updates the color and the sliders */
-   _etk_colorpicker_color_calc(cp->mode, cp->sp_xpos, cp->sp_ypos, cp->vp_pos, 
&r, &g, &b);
-   if (cp->current_color.r != r || cp->current_color.g != g || 
cp->current_color.b != b)
-   {
-      _etk_colorpicker_rgb_to_hsv(r, g, b, &h, &s, &v);
-      
-      etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_H]), h);
-      etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_S]), s);
-      etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_V]), v);
-      etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_R]), r);
-      etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_G]), g);
-      etk_range_value_set(ETK_RANGE(cp->sliders[ETK_COLORPICKER_B]), b);
-      
-      cp->current_color.r = r;
-      cp->current_color.g = g;
-      cp->current_color.b = b;
-      
-      etk_signal_emit(_etk_colorpicker_signals[ETK_CP_COLOR_CHANGED_SIGNAL], 
ETK_OBJECT(cp), NULL);
-   }
-   
    etk_widget_redraw_queue(ETK_WIDGET(cp));
 }
 
@@ -1110,7 +1159,9 @@
    r = cp->current_color.r;
    g = cp->current_color.g;
    b = cp->current_color.b;
-   _etk_colorpicker_rgb_to_hsv(r, g, b, &h, &s, &v);
+   h = etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_H]));
+   s = etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_S]));
+   v = etk_range_value_get(ETK_RANGE(cp->sliders[ETK_COLORPICKER_V]));
    
    for (i = 0; i < 6; i++)
    {
@@ -1121,13 +1172,13 @@
             switch (i)
             {
                case ETK_COLORPICKER_H:
-                  _etk_colorpicker_hsv_to_rgb(360.0 * ((float)j / 
cp->sliders_res), s, v, &r2, &g2, &b2);
+                  evas_color_hsv_to_rgb(360.0 * ((float)j / cp->sliders_res), 
s, v, &r2, &g2, &b2);
                   break;
                case ETK_COLORPICKER_S:
-                  _etk_colorpicker_hsv_to_rgb(h, (float)j / cp->sliders_res, 
v, &r2, &g2, &b2);
+                  evas_color_hsv_to_rgb(h, (float)j / cp->sliders_res, v, &r2, 
&g2, &b2);
                   break;
                case ETK_COLORPICKER_V:
-                  _etk_colorpicker_hsv_to_rgb(h, s, (float)j / 
cp->sliders_res, &r2, &g2, &b2);
+                  evas_color_hsv_to_rgb(h, s, (float)j / cp->sliders_res, &r2, 
&g2, &b2);
                   break;
                case ETK_COLORPICKER_R:
                   r2 = (255 * j) / cp->sliders_res;
@@ -1167,7 +1218,7 @@
    switch (cp->mode)
    {
       case ETK_COLORPICKER_H:
-         _etk_colorpicker_hsv_to_rgb(360.0 * (1.0 - ((float)i / cp->vp_res)), 
1.0, 1.0, r, g, b);
+         evas_color_hsv_to_rgb(360.0 * (1.0 - ((float)i / cp->vp_res)), 1.0, 
1.0, r, g, b);
          break;
       case ETK_COLORPICKER_S:
          *r = 255 - ((i * 255) / cp->vp_res);
@@ -1205,13 +1256,13 @@
    switch (mode)
    {
       case ETK_COLORPICKER_H:
-         _etk_colorpicker_hsv_to_rgb(vp_pos * 360.0, sp_ypos, sp_xpos, r, g, 
b);
+         evas_color_hsv_to_rgb(vp_pos * 360.0, sp_ypos, sp_xpos, r, g, b);
          break;
       case ETK_COLORPICKER_S:
-         _etk_colorpicker_hsv_to_rgb(sp_ypos * 360.0, vp_pos, sp_xpos, r, g, 
b);
+         evas_color_hsv_to_rgb(sp_ypos * 360.0, vp_pos, sp_xpos, r, g, b);
          break;
       case ETK_COLORPICKER_V:
-         _etk_colorpicker_hsv_to_rgb(sp_ypos * 360.0, sp_xpos, vp_pos, r, g, 
b);
+         evas_color_hsv_to_rgb(sp_ypos * 360.0, sp_xpos, vp_pos, r, g, b);
          break;
       case ETK_COLORPICKER_R:
          *r = 255 * vp_pos;
@@ -1231,78 +1282,6 @@
       default:
          break;
    }
-}
-
-/* Converts a hsv color to rgb. (r, g, b) must not be NULL! */
-static void _etk_colorpicker_hsv_to_rgb(float h, float s, float v, int *r, int 
*g, int *b)
-{
-   int i;
-   float f;
-
-   v *= 255;
-   if (s == 0)
-   {
-      *r = v;  *g = v;  *b = v;
-      return;
-   }
-
-   h /= 60;
-   i = h;
-   f = h - i;
-
-   s *= v;
-   f *= s;
-   s = v - s;
-   switch (i)
-   {
-      case 1:
-         *r = v - f;  *g = v;  *b = s;
-         return;
-      case 2:
-         *r = s;  *g = v;  *b = s + f;
-         return;
-      case 3:
-         *r = s;  *g = v - f;  *b = v;
-         return;
-      case 4:
-         *r = s + f;  *g = s;  *b = v;
-         return;
-      case 5:
-         *r = v;  *g = s;  *b = v - f;
-         return;
-      default:
-         *r = v;  *g = s + f;  *b = s;
-   }
-}
-
-/* Converts a rgb color to hsv. (h, s, v) must not be NULL! */
-static void _etk_colorpicker_rgb_to_hsv(int r, int g, int b, float *h, float 
*s, float *v)
-{
-   float  min, max, del;
-
-   min = ETK_MIN(r,g);  min = ETK_MIN(min,b);
-   max = ETK_MAX(r,g);  max = ETK_MAX(max,b);
-   del = max - min;
-
-   *v = (max / 255);
-   if ((max == 0) || (del == 0))
-   {
-      *s = 0; *h = 0;
-      return; 
-   }
-
-   *s = (del / max);
-
-   if (r == max)
-      *h = ((g - b) / del);
-   else if (g == max)
-      *h = 2 + ((b - r) / del);
-   else if (b == max)
-      *h = 4 + ((r - g) / del);
-
-   *h *= 60;
-   if (*h < 0)
-      *h += 360;
 }
 
 /** @} */
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_colorpicker.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- etk_colorpicker.h   18 May 2006 13:13:33 -0000      1.7
+++ etk_colorpicker.h   20 May 2006 15:59:17 -0000      1.8
@@ -49,6 +49,7 @@
    Evas_Object *sp_vcursor;
    int sp_res;
    float sp_xpos, sp_ypos;
+   Etk_Colorpicker_Mode sp_xcomponent, sp_ycomponent;
    Etk_Bool sp_dragging;
    Etk_Bool sp_image_needs_update;
    Etk_Bool sp_cursor_needs_update;
@@ -64,14 +65,18 @@
    Etk_Bool vp_cursor_needs_update;
    
    /* Sliders */
-   int sliders_res;
-   Evas_Object *sliders_image[6];
    Etk_Widget *sliders[6];
+   Evas_Object *sliders_image[6];
+   float sliders_max_value[6];
+   int sliders_res;
    Etk_Bool sliders_need_update;
    
    Etk_Widget *table;
    Etk_Widget *radios[6];
    Etk_Widget *value_labels[6];
+   
+   Etk_Bool ignore_value_changed;
+   Etk_Bool emit_signal;
    
    Etk_Colorpicker_Mode mode;
    Etk_Color current_color;
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_range.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- etk_range.c 12 Apr 2006 16:19:55 -0000      1.9
+++ etk_range.c 20 May 2006 15:59:17 -0000      1.10
@@ -28,10 +28,8 @@
 };
 
 static void _etk_range_constructor(Etk_Range *range);
-static void _etk_range_destructor(Etk_Range *range);
 static void _etk_range_property_set(Etk_Object *object, int property_id, 
Etk_Property_Value *value);
 static void _etk_range_property_get(Etk_Object *object, int property_id, 
Etk_Property_Value *value);
-static void _etk_range_change_value_job_cb(void *data);
 
 static Etk_Signal *_etk_range_signals[ETK_RANGE_NUM_SIGNALS];
 
@@ -52,7 +50,7 @@
    if (!range_type)
    {
       range_type = etk_type_new("Etk_Range", ETK_WIDGET_TYPE, 
sizeof(Etk_Range),
-         ETK_CONSTRUCTOR(_etk_range_constructor), 
ETK_DESTRUCTOR(_etk_range_destructor));
+         ETK_CONSTRUCTOR(_etk_range_constructor), NULL);
 
       _etk_range_signals[ETK_RANGE_VALUE_CHANGED_SIGNAL] = 
etk_signal_new("value_changed",
          range_type, ETK_MEMBER_OFFSET(Etk_Range, value_changed), 
etk_marshaller_VOID__DOUBLE, NULL, NULL);
@@ -105,8 +103,8 @@
    if (new_value != range->value)
    {
       range->value = new_value;
-      if (!range->change_value_job)
-         range->change_value_job = 
ecore_job_add(_etk_range_change_value_job_cb, range);
+      etk_signal_emit(_etk_range_signals[ETK_RANGE_VALUE_CHANGED_SIGNAL], 
ETK_OBJECT(range), NULL, range->value);
+      etk_object_notify(ETK_OBJECT(range), "value");
    }
 }
 
@@ -212,21 +210,9 @@
    range->step_increment = 0.0;
    range->page_increment = 0.0;
    range->page_size = 0.0;
-
-   range->change_value_job = NULL;
    range->value_changed = NULL;
 }
 
-/* Destroys the range */
-static void _etk_range_destructor(Etk_Range *range)
-{
-   if (!range)
-      return;
-   
-   if (range->change_value_job)
-      ecore_job_del(range->change_value_job);
-}
-
 /* Sets the property whose id is "property_id" to the value "value" */
 static void _etk_range_property_set(Etk_Object *object, int property_id, 
Etk_Property_Value *value)
 {
@@ -291,26 +277,6 @@
       default:
          break;
    }
-}
-
-/**************************
- *
- * Private functions
- *
- **************************/
-
-/* Emits the the "value changed" signal (doing it in a job to avoid emitting 
it too
- often when the mouse is moved for scrollbars or sliders for example) */
-static void _etk_range_change_value_job_cb(void *data)
-{
-   Etk_Range *range;
-   
-   if (!(range = ETK_RANGE(data)))
-      return;
-   
-   etk_signal_emit(_etk_range_signals[ETK_RANGE_VALUE_CHANGED_SIGNAL], 
ETK_OBJECT(range), NULL, range->value);
-   etk_object_notify(ETK_OBJECT(range), "value");
-   range->change_value_job = NULL;
 }
 
 /** @} */
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_range.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- etk_range.h 12 Apr 2006 16:19:55 -0000      1.7
+++ etk_range.h 20 May 2006 15:59:17 -0000      1.8
@@ -3,7 +3,6 @@
 #define _ETK_RANGE_H_
 
 #include "etk_widget.h"
-#include <Ecore_Job.h>
 #include "etk_types.h"
 
 /**
@@ -36,7 +35,6 @@
    double page_increment;
    double page_size;
 
-   Ecore_Job *change_value_job;
    void (*value_changed)(Etk_Range *range, double value);
 };
 
===================================================================
RCS file: /cvs/e/e17/proto/etk/src/lib/etk_slider.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- etk_slider.c        7 Apr 2006 15:36:11 -0000       1.6
+++ etk_slider.c        20 May 2006 15:59:17 -0000      1.7
@@ -182,12 +182,14 @@
       ETK_SLIDER(range)->dragging = ETK_TRUE;
    else if (strcmp(emission, "drag,stop") == 0)
       ETK_SLIDER(range)->dragging = ETK_FALSE;
-   
-   if (ETK_IS_HSLIDER(range))
-      edje_object_part_drag_value_get(obj, "drag", &v, NULL);
-   else
-      edje_object_part_drag_value_get(obj, "drag", NULL, &v);
-   etk_range_value_set(range, range->lower + v * (range->upper - 
range->lower));
+   else if (strcmp(emission, "drag") == 0)
+   {
+      if (ETK_IS_HSLIDER(range))
+         edje_object_part_drag_value_get(obj, "drag", &v, NULL);
+      else
+         edje_object_part_drag_value_get(obj, "drag", NULL, &v);
+      etk_range_value_set(range, range->lower + v * (range->upper - 
range->lower));
+   }
 }
 
 /* Default handler for the "value_changed" signal */




-------------------------------------------------------
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