rimmed pushed a commit to branch master.

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

commit 60247dae6bdd7d50d685ece4f96d970a648251b9
Author: Vyacheslav Reutskiy <[email protected]>
Date:   Thu Mar 31 16:21:35 2016 +0300

    workspace: implement workspace_container_fit
    
    Change-Id: I0b7df46d8947f616f068241303646a8326e2c6a8
---
 src/bin/ui/workspace/workspace.c | 47 ++++++++++++++++++++++++++++++++++++----
 src/bin/ui/workspace/workspace.h | 10 +++++++++
 2 files changed, 53 insertions(+), 4 deletions(-)

diff --git a/src/bin/ui/workspace/workspace.c b/src/bin/ui/workspace/workspace.c
index 2b1a677..5adff82 100644
--- a/src/bin/ui/workspace/workspace.c
+++ b/src/bin/ui/workspace/workspace.c
@@ -72,7 +72,7 @@ struct _Workspace_Data
       Evas_Object *layout;
       Evas_Object *obj;
       struct {
-         Evas_Object *fill;
+         Evas_Object *fit;
          Evas_Object *z100;
          Evas_Object *slider;
       } zoom;
@@ -286,6 +286,16 @@ _zoom100_cb(void *data,
 }
 
 static void
+_fit_cb(void *data,
+        Evas_Object *obj __UNUSED__,
+        void *event_info __UNUSED__)
+{
+   Workspace_Data *wd = data;
+
+   workspace_container_fit(wd->panes);
+}
+
+static void
 _slider_zoom_cb(void *data,
                 Evas_Object *obj __UNUSED__,
                 void *event_info __UNUSED__)
@@ -299,7 +309,7 @@ _slider_zoom_cb(void *data,
 static void
 _zoom_controls_disabled_set(Workspace_Data *wd, Eina_Bool disabled)
 {
-   elm_object_disabled_set(wd->toolbar.zoom.fill, disabled);
+   elm_object_disabled_set(wd->toolbar.zoom.fit, disabled);
    elm_object_disabled_set(wd->toolbar.zoom.z100, disabled);
    elm_object_disabled_set(wd->toolbar.zoom.slider, disabled);
 }
@@ -310,9 +320,12 @@ _zoom_controls_add(Workspace_Data *wd)
    Elm_Object_Item *tb_it;
    Evas_Object *img;
 
-   wd->toolbar.zoom.fill = elm_button_add(wd->toolbar.obj);
+   wd->toolbar.zoom.fit = elm_button_add(wd->toolbar.obj);
+   evas_object_smart_callback_add(wd->toolbar.zoom.fit, "clicked", _fit_cb, 
wd);
+   IMAGE_ADD_NEW(wd->toolbar.zoom.fit, img, "icon", "fit")
+   elm_object_part_content_set(wd->toolbar.zoom.fit, NULL, img);
    tb_it = elm_toolbar_item_append(wd->toolbar.obj, NULL, NULL, NULL, NULL);
-   elm_object_item_part_content_set(tb_it, NULL, wd->toolbar.zoom.fill);
+   elm_object_item_part_content_set(tb_it, NULL, wd->toolbar.zoom.fit);
 
    wd->toolbar.zoom.z100 = elm_button_add(wd->toolbar.obj);
    elm_object_text_set(wd->toolbar.zoom.z100, _("100%"));
@@ -1231,6 +1244,32 @@ workspace_container_fill(Evas_Object *obj)
 }
 
 void
+workspace_container_fit(Evas_Object *obj)
+{
+   int w, h, cw, ch;
+   double zoom;
+   int r, t, l, b;
+   Scroll_Area *area;
+
+   WS_DATA_GET(obj);
+
+   if ((MODE_NORMAL != wd->mode) && (MODE_CODE != wd->mode)) return;
+
+   area = _scroll_area_get(wd);
+   /* get the bg size, because bg size not included the scrollbar size */
+   evas_object_geometry_get(area->bg, NULL, NULL, &w, &h);
+   container_container_size_get(area->container, &cw, &ch);
+   container_padding_size_get(area->container, &r, &t, &l, &b);
+
+   if (cw >= ch)
+     zoom = (w - l - r) / (double)cw;
+   else
+     zoom = (h - t - b) / (double)ch;
+
+   workspace_zoom_factor_set(obj, zoom);
+}
+
+void
 workspace_state_next_request(Evas_Object *obj)
 {
    WS_DATA_GET(obj);
diff --git a/src/bin/ui/workspace/workspace.h b/src/bin/ui/workspace/workspace.h
index 8194211..2af77ec 100644
--- a/src/bin/ui/workspace/workspace.h
+++ b/src/bin/ui/workspace/workspace.h
@@ -262,6 +262,16 @@ void
 workspace_container_fill(Evas_Object *obj);
 
 /**
+ * Fill the workspace
+ *
+ * @param obj The workspace object.
+ *
+ * @ingroup Workspace
+ */
+void
+workspace_container_fit(Evas_Object *obj);
+
+/**
  * Switch beetwen show or hide mode of legend in workspace object.
  *
  * @param obj The workspace object.

-- 


Reply via email to