diff --git a/src/bin/live_edit.c b/src/bin/live_edit.c
index f1830fc..ed40ffa 100644
--- a/src/bin/live_edit.c
+++ b/src/bin/live_edit.c
@@ -378,12 +378,15 @@ calc_relative_info(live_data *ld)
enventor_object_live_view_size_get(base_enventor_get(), &vw, &vh);
//Calculate real min size of Live Edit Item base on current relative
+ double base_scale = enventor_object_base_scale_get(base_enventor_get());
Evas_Coord min_w =
(Evas_Coord) round(((double) vw) *
- (ld->rel_info.rel2_x - ld->rel_info.rel1_x));
+ (ld->rel_info.rel2_x - ld->rel_info.rel1_x) *
+ base_scale);
Evas_Coord min_h =
(Evas_Coord) round(((double) vh) *
- (ld->rel_info.rel2_y - ld->rel_info.rel1_y));
+ (ld->rel_info.rel2_y - ld->rel_info.rel1_y) *
+ base_scale);
//Set fixed properties of width for current Live Edit Item
if (fixed_w)
@@ -2337,6 +2340,78 @@ live_edit_tools_create(Evas_Object *parent)
return btn_list;
}
+static void
+fixed_w_check_changed_cb(void *data, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ live_data *ld = data;
+
+ double base_scale = enventor_object_base_scale_get(base_enventor_get());
+
+ Evas_Coord w;
+ evas_object_geometry_get(ld->layout, NULL, NULL, &w, NULL);
+
+ //Calculate scaled width based on base scale.
+ double scaled_w;
+ if (elm_check_state_get(obj))
+ scaled_w = w / base_scale; //Apply base scale.
+ else
+ scaled_w = w * base_scale; //Revert applying base scale.
+
+ //Calculate width difference based on scaled width.
+ double diff_w = w - scaled_w;
+
+ Evas_Coord vw;
+ Evas_Object *view = view_obj_get(ld);
+ evas_object_geometry_get(view, NULL, NULL, &vw, NULL);
+
+ //Update relative positions based on width difference.
+ ld->rel_info.rel1_x += ((diff_w / 2.0) / vw);
+ ld->rel_info.rel2_x -= ((diff_w / 2.0) / vw);
+
+ //Round off in the end to reduce round-off error.
+ ROUNDING(ld->rel_info.rel1_x, 2);
+ ROUNDING(ld->rel_info.rel2_x, 2);
+
+ live_edit_update_internal(ld);
+}
+
+static void
+fixed_h_check_changed_cb(void *data, Evas_Object *obj,
+ void *event_info EINA_UNUSED)
+{
+ live_data *ld = data;
+
+ double base_scale = enventor_object_base_scale_get(base_enventor_get());
+
+ Evas_Coord h;
+ evas_object_geometry_get(ld->layout, NULL, NULL, NULL, &h);
+
+ //Calculate scaled height based on base scale.
+ double scaled_h;
+ if (elm_check_state_get(obj))
+ scaled_h = h / base_scale; //Apply base scale.
+ else
+ scaled_h = h * base_scale; //Revert applying base scale.
+
+ //Calculate height difference based on scaled height.
+ double diff_h = h - scaled_h;
+
+ Evas_Coord vh;
+ Evas_Object *view = view_obj_get(ld);
+ evas_object_geometry_get(view, NULL, NULL, NULL, &vh);
+
+ //Update relative positions based on height difference.
+ ld->rel_info.rel1_y += ((diff_h / 2.0) / vh);
+ ld->rel_info.rel2_y -= ((diff_h / 2.0) / vh);
+
+ //Round off in the end to reduce round-off error.
+ ROUNDING(ld->rel_info.rel1_y, 2);
+ ROUNDING(ld->rel_info.rel2_y, 2);
+
+ live_edit_update_internal(ld);
+}
+
Evas_Object *
live_edit_init(Evas_Object *parent)
{
@@ -2362,6 +2437,8 @@ live_edit_init(Evas_Object *parent)
"When you check Fixed width, width of a new
"
"part won't be resizable but it will stick a
"
"fixed size.");
+ evas_object_smart_callback_add(fixed_w_check, "changed",
+ fixed_w_check_changed_cb, ld);
evas_object_show(fixed_w_check);
elm_box_pack_end(fixed_box, fixed_w_check);
@@ -2373,6 +2450,8 @@ live_edit_init(Evas_Object *parent)
"When you check Fixed height, height of a
"
"new part won't be resizable but it will
"
"stick a fixed size.");
+ evas_object_smart_callback_add(fixed_h_check, "changed",
+ fixed_h_check_changed_cb, ld);
evas_object_show(fixed_h_check);
elm_box_pack_end(fixed_box, fixed_h_check);