hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=c3bae3bd0128a4c8376d27052b0ccb941f2a3169

commit c3bae3bd0128a4c8376d27052b0ccb941f2a3169
Author: Kateryna Fesyna <[email protected]>
Date:   Wed Aug 13 19:10:14 2014 +0900

    Live Edit: Add ability to drag new part area
    
    Reviewers: Hermet
    
    Projects: #enventor
    
    Differential Revision: https://phab.enlightenment.org/D1319
    
    Conflicts:
    
        src/bin/live_edit.c
---
 data/themes/default/layout_common.edc |  1 +
 src/bin/live_edit.c                   | 62 ++++++++++++++++++++++++++++++++++-
 2 files changed, 62 insertions(+), 1 deletion(-)

diff --git a/data/themes/default/layout_common.edc 
b/data/themes/default/layout_common.edc
index 2947030..3082593 100644
--- a/data/themes/default/layout_common.edc
+++ b/data/themes/default/layout_common.edc
@@ -1344,6 +1344,7 @@ group { name: "live_edit_layout";
       }
       part { name: "new_part_bg_decorations";
          scale: 1;
+         repeat_events: 1;
          description { state: "default" 0.0;
             image.normal: "live_edit_icons/bg_glow_in.png";
             image.border: 1 1 1 1;
diff --git a/src/bin/live_edit.c b/src/bin/live_edit.c
index 1c777cd..e50c8e3 100644
--- a/src/bin/live_edit.c
+++ b/src/bin/live_edit.c
@@ -1,3 +1,4 @@
+#include <Elementary_Cursor.h>
 #include <Elementary.h>
 #include "common.h"
 
@@ -118,6 +119,54 @@ dragable_geometry_changed_cb(void *data,
 }
 
 static void
+new_part_mouse_move_cb(void *data, Evas *e EINA_UNUSED,
+                 Evas_Object *obj EINA_UNUSED, void *event_info)
+{
+   Evas_Event_Mouse_Move *ev = event_info;
+   live_data *ld = data;
+
+   Evas_Coord view_w, view_h;
+   config_view_size_get(&view_w, &view_h);
+   int cur_x = ld->cur_part_data->x + ev->cur.canvas.x - ev->prev.canvas.x;
+   int cur_y = ld->cur_part_data->y + ev->cur.canvas.y - ev->prev.canvas.y;
+
+   if ((cur_x >= 0) && (cur_y >= 0) &&
+       (cur_x <= view_w - ld->cur_part_data->w) &&
+       (cur_y <= view_h - ld->cur_part_data->h))
+     {
+        double dx = ((float) cur_x / (float) view_w) -
+           ld->cur_part_data->rel1_x;
+        double dy = ((float) cur_y / (float) view_h) -
+           ld->cur_part_data->rel1_y;
+        edje_object_part_drag_step(elm_layout_edje_get(ld->layout),
+                                   "rel1.dragable", dx, dy);
+        edje_object_part_drag_step(elm_layout_edje_get(ld->layout),
+                                   "rel2.dragable", dx, dy);
+        part_info_update(ld);
+     }
+}
+
+static void
+new_part_mouse_down_cb(void *data,
+                       Evas_Object *obj,
+                       const char *emission EINA_UNUSED,
+                       const char *source EINA_UNUSED)
+{
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_MOUSE_MOVE,
+                                  new_part_mouse_move_cb, data);
+}
+
+static void
+new_part_mouse_up_cb(void *data EINA_UNUSED,
+                      Evas_Object *obj,
+                      const char *emission EINA_UNUSED,
+                      const char *source EINA_UNUSED)
+{
+   evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_MOVE,
+                                  new_part_mouse_move_cb);
+}
+
+static void
 live_edit_reset(live_data *ld)
 {
    ecore_event_handler_del(ld->key_down_handler);
@@ -163,8 +212,19 @@ live_edit_layer_set(live_data *ld)
    edje_object_signal_callback_add(elm_layout_edje_get(layout),
                                    "drag", "rel2.dragable",
                                    dragable_geometry_changed_cb, ld);
+   edje_object_signal_callback_add(elm_layout_edje_get(layout),
+                                   "mouse,down,1", "new_part_bg",
+                                   new_part_mouse_down_cb, ld);
+   edje_object_signal_callback_add(elm_layout_edje_get(layout),
+                                   "mouse,up,1", "new_part_bg",
+                                   new_part_mouse_up_cb, ld);
+   elm_layout_part_cursor_set(ld->layout, "new_part_bg",
+                              ELM_CURSOR_FLEUR);
+   elm_layout_part_cursor_set(ld->layout, "rel1.dragable",
+                              ELM_CURSOR_TOP_LEFT_CORNER);
+   elm_layout_part_cursor_set(ld->layout, "rel2.dragable",
+                              ELM_CURSOR_BOTTOM_RIGHT_CORNER);
    part_info_update(ld);
-
    ld->layout = layout;
 }
 

-- 


Reply via email to