rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=d30aff8a7bcc0ddfa533f3ad1f8000fcbc13e77c

commit d30aff8a7bcc0ddfa533f3ad1f8000fcbc13e77c
Author: Vyacheslav Reutskiy <v.reuts...@samsung.com>
Date:   Mon Apr 4 16:14:43 2016 +0300

    workspace: implement the align change by mouse
    
    Change-Id: I019e9430db2dcdc8e5386ab1535f038a1f7a4075
---
 src/bin/ui/workspace/groupview.c |   3 +-
 src/bin/ui/workspace/highlight.c |  13 -----
 src/bin/ui/workspace/workspace.c | 105 ++++++++++++++++++++++++++++++---------
 3 files changed, 84 insertions(+), 37 deletions(-)

diff --git a/src/bin/ui/workspace/groupview.c b/src/bin/ui/workspace/groupview.c
index 8a08a53..ddfbf55 100644
--- a/src/bin/ui/workspace/groupview.c
+++ b/src/bin/ui/workspace/groupview.c
@@ -410,7 +410,7 @@ groupview_part_object_area_visible_set(Evas_Object *obj, 
Eina_Bool visible)
         evas_object_show(sd->object_area);
      }
    else evas_object_hide(sd->object_area);
-
+   highlight_handler_align_visible_set(sd->highlight, visible);
 }
 
 Eina_Bool
@@ -502,6 +502,7 @@ groupview_part_select(Evas_Object *obj, const char *part)
         evas_object_hide(sd->highlight);
         evas_object_hide(sd->object_area);
      }
+   highlight_handler_align_visible_set(sd->highlight, sd->obj_area_visible);
 }
 
 TODO("remove this from public API and use callback from part list");
diff --git a/src/bin/ui/workspace/highlight.c b/src/bin/ui/workspace/highlight.c
index 1944a89..43aa6d5 100644
--- a/src/bin/ui/workspace/highlight.c
+++ b/src/bin/ui/workspace/highlight.c
@@ -743,19 +743,6 @@ highlight_handler_align_visible_set(Evas_Object *hl, 
Eina_Bool visible)
    if (highlight->handlers_disabled) return;
 
    highlight->middle_show = visible;
-
-   /* If any of the handlers are hidden then probably mouse is corrently over
-      the one of them and all other handlers (including Middle one) should be
-      hidden aswell.
-      In case if mode of the highlight is STATIC then we don't care about
-      handler's visibility. */
-   if ((highlight->mode != HIGHLIGHT_STATIC_HANDLERS) ||
-       ((!evas_object_visible_get(highlight->handler_RB->border)) &&
-        (!evas_object_visible_get(highlight->handler_RT->border)) &&
-        (!evas_object_visible_get(highlight->handler_LB->border)) &&
-        (!evas_object_visible_get(highlight->handler_LT->border))))
-     return;
-
    if (visible)
      evas_object_show(highlight->handler_MIDDLE->border);
    else
diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c
index c2a46ec..33f50bc 100644
--- a/src/bin/ui/workspace/workspace.c
+++ b/src/bin/ui/workspace/workspace.c
@@ -43,6 +43,7 @@
  * viewed, we can use the static Change for all workspace */
 static Change *change;
 static Evas_Coord part_w, part_h;
+static double part_align_x, part_align_y;
 
 struct _Ruler {
    Evas_Object *obj;
@@ -736,12 +737,24 @@ _groupview_hl_part_drag_start(void *data,
    Groupview_HL_Event *event = event_info;
 
    change = change_add(NULL);
-   part_w = edje_edit_state_max_w_get(wd->group->edit_object, 
event->part->name,
-                                      event->part->current_state->parsed_name,
-                                      event->part->current_state->parsed_val);
-   part_h = edje_edit_state_max_h_get(wd->group->edit_object, 
event->part->name,
-                                      event->part->current_state->parsed_name,
-                                      event->part->current_state->parsed_val);
+   if (MIDDLE != event->hl_type)
+     {
+        part_w = edje_edit_state_max_w_get(wd->group->edit_object, 
event->part->name,
+                                           
event->part->current_state->parsed_name,
+                                           
event->part->current_state->parsed_val);
+        part_h = edje_edit_state_max_h_get(wd->group->edit_object, 
event->part->name,
+                                           
event->part->current_state->parsed_name,
+                                           
event->part->current_state->parsed_val);
+     }
+   else
+     {
+        part_align_x = edje_edit_state_align_x_get(wd->group->edit_object, 
event->part->name,
+                                                   
event->part->current_state->parsed_name,
+                                                   
event->part->current_state->parsed_val);
+        part_align_y = edje_edit_state_align_y_get(wd->group->edit_object, 
event->part->name,
+                                                   
event->part->current_state->parsed_name,
+                                                   
event->part->current_state->parsed_val);
+     }
 }
 
 static void
@@ -752,14 +765,39 @@ _groupview_hl_part_changed(void *data,
    Workspace_Data *wd = data;
    Groupview_HL_Event *event = event_info;
 
-   editor_state_max_w_set(wd->group->edit_object, change, true, 
event->part->name,
-                          event->part->current_state->parsed_name,
-                          event->part->current_state->parsed_val,
-                          event->w);
-   editor_state_max_h_set(wd->group->edit_object, change, true, 
event->part->name,
-                          event->part->current_state->parsed_name,
-                          event->part->current_state->parsed_val,
-                          event->h);
+   assert(wd->mode == MODE_NORMAL);
+
+   if (MIDDLE != event->hl_type)
+     {
+        editor_state_max_w_set(wd->group->edit_object, change, true, 
event->part->name,
+                               event->part->current_state->parsed_name,
+                               event->part->current_state->parsed_val,
+                               event->w);
+        editor_state_max_h_set(wd->group->edit_object, change, true, 
event->part->name,
+                               event->part->current_state->parsed_name,
+                               event->part->current_state->parsed_val,
+                               event->h);
+     }
+   else
+     {
+        const Groupview_Geom *geom;
+        geom = 
groupview_part_selected_object_area_geom_get(wd->normal.content);
+        double align_x = (double)(event->x - geom->x) / (double)(geom->w - 
event->w);
+        double align_y = (double)(event->y - geom->y) / (double)(geom->h - 
event->h);
+
+
+        if ((geom->w == event->w) || (align_x < 0)) align_x = 0;
+        if ((geom->h == event->h) || (align_y < 0)) align_y = 0;
+        if (align_x > 1.0) align_x = 1.0;
+        if (align_y > 1.0) align_y = 1.0;
+        editor_state_align_x_set(wd->group->edit_object, change, true, 
event->part->name,
+                                 event->part->current_state->parsed_name,
+                                 event->part->current_state->parsed_val, 
align_x);
+        editor_state_align_y_set(wd->group->edit_object, change, true, 
event->part->name,
+                                 event->part->current_state->parsed_name,
+                                 event->part->current_state->parsed_val, 
align_y);
+
+     }
 }
 
 static void
@@ -771,16 +809,37 @@ _groupview_hl_part_drag_stop(void *data,
    Groupview_HL_Event *event = event_info;
    Eina_Stringshare *msg;
 
-   if ((part_w == event->w) && (part_h == event->h))
-     change_free(change);
+   if (MIDDLE != event->hl_type)
+     {
+        if ((part_w == event->w) && (part_h == event->h))
+          change_free(change);
+        else
+          {
+             msg = eina_stringshare_printf(_("max size changed from [%dx%d] to 
[%dx%d]"), part_w, part_h, event->w, event->h);
+             change_description_set(change, msg);
+             eina_stringshare_del(msg);
+             history_change_add(wd->group->history, change);
+          }
+     }
    else
      {
-        msg = eina_stringshare_printf(_("max size changed from [%dx%d] to 
[%dx%d]"), part_w, part_h, event->w, event->h);
-        change_description_set(change, msg);
-        eina_stringshare_del(msg);
-        history_change_add(wd->group->history, change);
+        double align_x = edje_edit_state_align_x_get(wd->group->edit_object, 
event->part->name,
+                                                     
event->part->current_state->parsed_name,
+                                                     
event->part->current_state->parsed_val);
+        double align_y = edje_edit_state_align_y_get(wd->group->edit_object, 
event->part->name,
+                                                     
event->part->current_state->parsed_name,
+                                                     
event->part->current_state->parsed_val);
+        if ((align_x == part_align_x) && (align_y == part_align_y))
+          change_free(change);
+        else
+          {
+             msg = eina_stringshare_printf(_("align changed from [%fx%f] to 
[%fx%f]"),
+                                           part_align_x, part_align_y, 
align_x, align_y);
+             change_description_set(change, msg);
+             eina_stringshare_del(msg);
+             history_change_add(wd->group->history, change);
+          }
      }
-
    change = NULL;
 }
 
/******************************************************************************/
@@ -790,9 +849,9 @@ _panes_h_unpress(void *data,
                  Evas_Object *obj,
                  void *event_info __UNUSED__)
 {
-    Workspace_Data *wd = data;
+   Workspace_Data *wd = data;
 
-    wd->code.size = elm_panes_content_right_size_get(obj);
+   wd->code.size = elm_panes_content_right_size_get(obj);
 }
 
 Evas_Object *

-- 


Reply via email to