[elm_webview]modify auto_fitting api
authorRyuan Choi <ryuan.choi@samsung.com>
Thu, 19 Aug 2010 09:53:50 +0000 (18:53 +0900)
committerRyuan Choi <ryuan.choi@samsung.com>
Thu, 19 Aug 2010 09:53:50 +0000 (18:53 +0900)
src/lib/Elementary.h.in
src/lib/elm_webview.c
src/lib/els_webview.c

index 50fcb3b..98b8dec 100755 (executable)
@@ -2515,8 +2515,8 @@ extern "C" {
    EAPI Evas_Object *elm_webview_webkit_get(Evas_Object *obj);
    EAPI void         elm_webview_events_feed_set(Evas_Object *obj, Eina_Bool feed);
    EAPI Eina_Bool    elm_webview_events_feed_get(Evas_Object *obj);
-   EAPI void         elm_webview_auto_fitting_set(Eina_Bool enable);
-   EAPI Eina_Bool    elm_webview_auto_fitting_get();
+   EAPI void         elm_webview_auto_fitting_set(Evas_Object *obj, Eina_Bool enable);
+   EAPI Eina_Bool    elm_webview_auto_fitting_get(Evas_Object *obj);
    EAPI Evas_Object *elm_webview_minimap_get(Evas_Object *obj);
    EAPI void         elm_webview_uri_set(Evas_Object *obj, const char *uri);
    EAPI void         elm_webview_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce);
index 7948791..2b038fa 100644 (file)
@@ -16,7 +16,6 @@ typedef struct _Widget_Data Widget_Data;
 struct _Widget_Data
 {
    Evas_Object *webkit;
-   Eina_Bool auto_fitting:1;
 };
 
 static const char *widtype = NULL;
@@ -129,20 +128,27 @@ elm_webview_events_feed_get(Evas_Object *obj)
 }
 
 EAPI void
-elm_webview_auto_fitting_set(Eina_Bool enable)
+elm_webview_auto_fitting_set(Evas_Object *obj, Eina_Bool enable)
 {
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   _elm_smart_webview_auto_fitting_set(wd->webkit, enable);
 }
 
 EAPI Eina_Bool
-elm_webview_auto_fitting_get()
+elm_webview_auto_fitting_get(Evas_Object *obj)
 {
-   return EINA_FALSE;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return EINA_FALSE;
+   return _elm_smart_webview_auto_fitting_get(wd->webkit);
 }
 
 EAPI Evas_Object *
 elm_webview_minimap_get(Evas_Object *obj)
 {
-   return NULL;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return EINA_FALSE;
+   return _elm_smart_webview_minimap_get(wd->webkit);
 }
 
 EAPI void
@@ -154,7 +160,7 @@ elm_webview_uri_set(Evas_Object *obj, const char *uri)
 }
 
 /**
- * Set bouncing behavior
+ * Set bouncing behavior(Not supported yet)
  *
  * When scrolling, the WebView may "bounce" when reaching an edge of contents
  * This is a visual way to indicate the end has been reached. This is enabled
index b4403e9..1ebff06 100644 (file)
@@ -51,6 +51,7 @@ struct _Smart_Data {
      int locked_dy;
      unsigned char bounce_horiz : 1;
      unsigned char bounce_vert : 1;
+     unsigned char auto_fitting : 1;
 
      /* ewk functions */
      void (*ewk_view_theme_set)(Evas_Object *, const char *);
@@ -158,7 +159,6 @@ struct _Smart_Data {
          int w, h;
      } layout;
 
-     Eina_Bool auto_fitting;
      Ecore_Animator* smart_zoom_animator;
 
      Evas_Point pan_s;
@@ -1098,6 +1098,11 @@ _smart_cb_mouse_down(void* data, Evas_Object* webview, void* ev)
      sd->ewk_frame_feed_focus_in = (Eina_Bool (*)(Evas_Object *))dlsym(ewk_handle, "ewk_frame_feed_focus_in");
    sd->ewk_frame_feed_focus_in(sd->ewk_view_frame_main_get(webview));
    _parent_sc.mouse_down((Ewk_View_Smart_Data*)sd, &sd->mouse_down_copy);
+
+   if (sd->bounce_horiz)
+     elm_widget_drag_lock_x_set(sd->widget, EINA_TRUE);
+   if (sd->bounce_vert)
+     elm_widget_drag_lock_y_set(sd->widget, EINA_TRUE);
 }
 
 static void
@@ -1365,45 +1370,38 @@ _smart_cb_pan_by(void* data, Evas_Object* webview, void* ev)
      }
 #else
    Eina_Bool locked = EINA_FALSE;
-   if (!sd->bounce_horiz)
+   if (!elm_widget_drag_lock_x_get(sd->widget))
      {
-       if (!elm_widget_drag_lock_x_get(sd->widget))
+       if ((old_x + dx) >= 0 && (old_x + dx) <=content_w)
+         elm_widget_drag_lock_x_set(sd->widget, EINA_TRUE);
+       else if ((sd->locked_dx > 0 && (sd->locked_dx + dx) <= 0)
+             || (sd->locked_dx < 0 && (sd->locked_dx + dx) >= 0))
          {
-            if ((old_x + dx) >= 0 && (old_x + dx) <=content_w)
-              elm_widget_drag_lock_x_set(sd->widget, EINA_TRUE);
-            else if ((sd->locked_dx > 0 && (sd->locked_dx + dx) <= 0)
-                  || (sd->locked_dx < 0 && (sd->locked_dx + dx) >= 0))
-              {
-                 elm_widget_drag_lock_x_set(sd->widget, EINA_TRUE);
-                 DBG("===============<< widget x lock >>\n");
-                 dx += sd->locked_dx;
-              }
-            else
-              {
-                 sd->locked_dx += dx;
-                 locked = EINA_TRUE;
-              }
+            elm_widget_drag_lock_x_set(sd->widget, EINA_TRUE);
+            DBG("===============<< widget x lock >>\n");
+            dx += sd->locked_dx;
+         }
+       else
+         {
+            sd->locked_dx += dx;
+            locked = EINA_TRUE;
          }
      }
-   if (!sd->bounce_vert)
+   if (!elm_widget_drag_lock_y_get(sd->widget))
      {
-       if (!elm_widget_drag_lock_y_get(sd->widget))
+       if ((old_y + dy) >= 0 && (old_y + dy) <= content_h)
+         elm_widget_drag_lock_y_set(sd->widget, EINA_TRUE);
+       else if ((sd->locked_dy > 0 && (sd->locked_dy + dy) <= 0)
+             || (sd->locked_dy < 0 && (sd->locked_dy + dy) >= 0))
          {
-            if ((old_y + dy) >= 0 && (old_y + dy) <= content_h)
-              elm_widget_drag_lock_y_set(sd->widget, EINA_TRUE);
-            else if ((sd->locked_dy > 0 && (sd->locked_dy + dy) <= 0)
-                  || (sd->locked_dy < 0 && (sd->locked_dy + dy) >= 0))
-              {
-                 elm_widget_drag_lock_y_set(sd->widget, EINA_TRUE);
-                 DBG("===============<< widget y lock >>\n");
-                 dy += sd->locked_dy;
-
-              }
-            else
-              {
-                 sd->locked_dy += dy;
-                 locked = EINA_TRUE;
-              }
+            elm_widget_drag_lock_y_set(sd->widget, EINA_TRUE);
+            DBG("===============<< widget y lock >>\n");
+            dy += sd->locked_dy;
+         }
+       else
+         {
+            sd->locked_dy += dy;
+            locked = EINA_TRUE;
          }
      }
 #endif
@@ -1426,14 +1424,16 @@ _smart_cb_pan_by(void* data, Evas_Object* webview, void* ev)
    if (sd->text_selection_on == EINA_TRUE)
      _text_selection_move_by(sd, old_x - new_x, old_y - new_y);
 
-   if (dx && elm_widget_drag_lock_x_get(sd->widget) && (old_x == new_x))
+   if (!sd->bounce_horiz &&
+        (dx && elm_widget_drag_lock_x_get(sd->widget) && (old_x == new_x)))
      {
        sd->locked_dx = dx - (old_x - new_x);
        elm_widget_drag_lock_x_set(sd->widget, EINA_FALSE);
        DBG("===============<< widget x unlock >>\n");
      }
 
-   if (dy && elm_widget_drag_lock_y_get(sd->widget) && (old_y == new_y))
+   if (!sd->bounce_vert &&
+        (dy && elm_widget_drag_lock_y_get(sd->widget) && (old_y == new_y)))
      {
        sd->locked_dy = dy - (old_y - new_y);
        elm_widget_drag_lock_y_set(sd->widget, EINA_FALSE);
@@ -1485,13 +1485,13 @@ _smart_cb_pan_stop(void* data, Evas_Object* webview, void* ev)
      sd->ewk_view_resume_request = (Eina_Bool (*)(Evas_Object *))dlsym(ewk_handle, "ewk_view_resume_request");
    sd->ewk_view_resume_request(webview); // resume network loading
 
-   if (elm_widget_drag_lock_x_get(sd->widget))
+   if (!sd->bounce_horiz && elm_widget_drag_lock_x_get(sd->widget))
      {
        DBG("==============<< widget x unlock >>\n");
        elm_widget_drag_lock_x_set(sd->widget, EINA_FALSE);
      }
 
-   if (elm_widget_drag_lock_y_get(sd->widget))
+   if (!sd->bounce_vert && elm_widget_drag_lock_y_get(sd->widget))
      {
        DBG("==============<< widget y unlock >>\n");
        elm_widget_drag_lock_y_set(sd->widget, EINA_FALSE);