Merge branch 'master' of 165.213.180.234:/git/slp/pkgs/elementary
authorDaniel Juyung Seo <juyung.seo@samsung.com>
Thu, 19 Aug 2010 09:52:03 +0000 (18:52 +0900)
committerDaniel Juyung Seo <juyung.seo@samsung.com>
Thu, 19 Aug 2010 09:52:03 +0000 (18:52 +0900)
debian/changelog
src/lib/Elementary.h.in
src/lib/elm_colorpicker.c
src/lib/elm_controlbar.c
src/lib/elm_ctxpopup.c
src/lib/elm_navigationbar.c
src/lib/elm_webview.c
src/lib/els_webview.c

index 49c04d9..26cebd2 100644 (file)
@@ -1,3 +1,11 @@
+elementary (0.4.0+svn.49550slp2+3build36) unstable; urgency=low
+
+  * add clip set
+  * Git: 165.213.180.234:/git/slp/pkgs/elementary
+  * Tag: elementary_0.4.0+svn.49550slp2+3build36
+
+ -- Jaehwan Kim <jae.hwan.kim@samsung.com>  Thu, 19 Aug 2010 17:30:22 +0900
+
 elementary (0.4.0+svn.49550slp2+3build35) unstable; urgency=low
 
   * added dependency for the webkit-engine
index 6ab6108..98b8dec 100755 (executable)
@@ -2199,7 +2199,7 @@ extern "C" {
    EAPI void         elm_colorpicker_color_set(Evas_Object *obj, int r, int g , int b);
    EAPI void         elm_colorpicker_color_get(Evas_Object *obj, int *r, int *g , int *b);
    /* smart callbacks called:
-    * "clicked" - when bar or button is clicked
+    * "changed" - when color is changed
     */
 
 
@@ -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 2026412..a9913b7 100644 (file)
@@ -29,6 +29,7 @@ struct _Colorpicker_Data
    Evas_Object *touch_area;
    int colorpicker_num;
    int button_state;
+   int feed_cnt;
 };
 
 typedef struct _Widget_Data Widget_Data;
@@ -74,6 +75,11 @@ static void _color_with_lightness(void *data);
 static void _draw_rects(void *data, double x);
 static void _arrow_cb(void *data, Evas_Object * obj, const char *emission,
                      const char *source);
+static void _drag_start(void *data, Evas_Object *obj, const char *emission, 
+               const char *source);
+static void _drag_stop(void *data, Evas_Object *obj, const char *emission, 
+               const char *source);
+
 static void _colorbar_cb(void *data, Evas * e, Evas_Object * obj,
                         void *event_info);
 static void _arrow_resize_cb(void *data, Evas * e, Evas_Object * obj,
@@ -536,10 +542,22 @@ _arrow_cb(void *data, Evas_Object * obj, const char *emission,
 
    edje_object_part_drag_value_get(obj, "arrow", &x, &y);
    _draw_rects(data, x);
-   evas_object_smart_callback_call(cp->parent, "clicked", NULL);
+   evas_object_smart_callback_call(cp->parent, "changed", NULL);
+}
+
+static void
+_drag_start(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+   elm_widget_scroll_hold_push(data);
 }
 
 static void
+_drag_stop(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+   elm_widget_scroll_hold_pop(data);
+}
+       
+static void
 _colorbar_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
 {
    Colorpicker_Data *cp = (Colorpicker_Data *) data;
@@ -556,9 +574,12 @@ _colorbar_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
       arrow_x = 0;
    edje_object_part_drag_value_set(cp->colorbar, "arrow", arrow_x, arrow_y);
    _draw_rects(data, arrow_x);
-   evas_object_smart_callback_call(cp->parent, "clicked", NULL);
+   evas_object_smart_callback_call(cp->parent, "changed", NULL);
    evas_event_feed_mouse_cancel(e, 0, NULL);
-   evas_event_feed_mouse_down(e, 1, EVAS_BUTTON_NONE, 0, NULL);
+   cp->feed_cnt ++;
+   if(cp->feed_cnt < 3)
+       evas_event_feed_mouse_down(e, 1, EVAS_BUTTON_NONE, 0, NULL);
+   cp->feed_cnt = 0;
 }
 
 static void
@@ -592,7 +613,7 @@ _mv_timer(void *data)
           x = 0;
        edje_object_part_drag_value_set(cp->colorbar, "arrow", x, y);
        _draw_rects(data, x);
-       evas_object_smart_callback_call(cp->parent, "clicked", NULL);
+       evas_object_smart_callback_call(cp->parent, "changed", NULL);
        return 1;
      }
    else if (cp->button_state == R_BUTTON_PRESSED)
@@ -602,7 +623,7 @@ _mv_timer(void *data)
           x = 1;
        edje_object_part_drag_value_set(cp->colorbar, "arrow", x, y);
        _draw_rects(data, x);
-       evas_object_smart_callback_call(cp->parent, "clicked", NULL);
+       evas_object_smart_callback_call(cp->parent, "changed", NULL);
        return 1;
      }
    else
@@ -656,7 +677,7 @@ _left_button_down_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
 
    edje_object_part_drag_value_set(cp->colorbar, "arrow", x, y);
    _draw_rects(data, x);
-   evas_object_smart_callback_call(cp->parent, "clicked", NULL);
+   evas_object_smart_callback_call(cp->parent, "changed", NULL);
    cp->button_state = L_BUTTON_PRESSED;
    wd->lp_timer = ecore_timer_add(1.0, _long_press_timer, cp);
 }
@@ -684,7 +705,7 @@ _right_button_down_cb(void *data, Evas * e, Evas_Object * obj, void *event_info)
 
    edje_object_part_drag_value_set(cp->colorbar, "arrow", x, y);
    _draw_rects(data, x);
-   evas_object_smart_callback_call(cp->parent, "clicked", NULL);
+   evas_object_smart_callback_call(cp->parent, "changed", NULL);
    cp->button_state = R_BUTTON_PRESSED;
    wd->lp_timer = ecore_timer_add(1.0, _long_press_timer, cp);
 }
@@ -752,6 +773,7 @@ _add_colorbar(Evas_Object * obj)
 
        wd->cp[i]->parent = obj;
        wd->cp[i]->colorpicker_num = i;
+       wd->cp[i]->feed_cnt = 0;
 
        /* load colorbar area */
        wd->cp[i]->colorbar = edje_object_add(e);
@@ -759,6 +781,10 @@ _add_colorbar(Evas_Object * obj)
        snprintf(colorbar_name, sizeof(colorbar_name), "colorbar_%d", i);
        edje_object_signal_callback_add(wd->cp[i]->colorbar, "drag", "*",
                                        _arrow_cb, wd->cp[i]);
+       edje_object_signal_callback_add( wd->cp[i]->colorbar, "drag,start", "*", 
+                                       _drag_start, obj);
+       edje_object_signal_callback_add( wd->cp[i]->colorbar, "drag,stop", "*", 
+                                       _drag_stop, obj);
        edje_object_part_swallow(wd->lay, colorbar_name, wd->cp[i]->colorbar);
        evas_object_show(wd->cp[i]->colorbar);
        elm_widget_sub_object_add(obj, wd->cp[i]->colorbar);
index 99ffc2c..953dc3a 100644 (file)
@@ -1260,7 +1260,6 @@ create_item_layout(Evas_Object * parent, Elm_Controlbar_Item * it)
                         elm_widget_style_get(it->obj));
    evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   elm_widget_sub_object_add(it->obj, obj);
    if (it->label)
      {
        edje_object_part_text_set(_EDJ(obj), "elm.text", it->label);
@@ -1968,7 +1967,7 @@ create_more_item(Widget_Data *wd)
                                     EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(wd->box, EVAS_HINT_FILL, EVAS_HINT_FILL);
 //   edje_object_part_swallow(wd->edje, "elm.swallow.items", wd->box);
-   elm_widget_sub_object_add(obj, wd->box);
+   evas_object_clip_set(wd->box, wd->edje);
    evas_object_show(wd->box);
    
    wd->event_box = evas_object_rectangle_add(wd->evas);
index 648f67d..d0fa72e 100644 (file)
@@ -40,6 +40,7 @@ struct _Widget_Data
    Eina_List *items;
    Elm_Ctxpopup_Arrow arrow_dir;
    int btn_cnt;
+   Elm_Transit *transit;
    Elm_Ctxpopup_Arrow arrow_priority[4];
    Eina_Bool scroller_disabled:1;
    Eina_Bool horizontal:1;
@@ -75,7 +76,7 @@ static void _separator_obj_add(Evas_Object *obj);
 static void _separator_obj_del(Widget_Data *wd,
                               Elm_Ctxpopup_Item *remove_item);
 static Elm_Ctxpopup_Arrow _calc_base_geometry(Evas_Object *obj,
-                                             Evas_Coord_Rectangle *rect);
+                                       Evas_Coord_Rectangle *rect);
 static void _update_arrow_obj(Evas_Object *obj, Elm_Ctxpopup_Arrow arrow_dir);
 static void _shift_base_by_arrow(Evas_Object *arrow,
                                 Elm_Ctxpopup_Arrow arrow_dir,
@@ -245,11 +246,11 @@ _calc_base_geometry(Evas_Object *obj, Evas_Coord_Rectangle *rect)
 
    finger_size = elm_finger_size_get();
 
-       edje_object_part_geometry_get(wd->arrow, "ctxpopup_arrow", NULL, NULL,
+       edje_object_part_geometry_get(wd->arrow, "ctxpopup_arrow", NULL, NULL,
                                      &arrow_w, &arrow_h);
        evas_object_resize(wd->arrow, arrow_w, arrow_h);
 
-   //Define x, y Segments and find invalidated direction.
+       //Define x, y Segments and find invalidated direction.
    for (idx = 0; idx < 4; ++idx)
      {
        switch (wd->arrow_priority[idx])
@@ -323,12 +324,13 @@ _calc_base_geometry(Evas_Object *obj, Evas_Coord_Rectangle *rect)
      }
 
    //Not enough space to locate. In this case, just show with down arrow.
+   //And prevent to show the arrow.
    if( !(available_direction[0] | available_direction[1] | available_direction[2] | available_direction[3]) )
    {
-            y1 = parent_y;
             ADJUST_POS_X(x);
-            y -= (base_h + finger_size);
-            arrow = ELM_CTXPOPUP_ARROW_DOWN;
+            arrow = -1;
+            y = parent_y;
+            evas_object_hide(wd->arrow);
    }
 
    rect->x = x;
@@ -365,7 +367,7 @@ _update_arrow_obj(Evas_Object *obj, Elm_Ctxpopup_Arrow arrow_dir)
        {
           edje_object_signal_emit(wd->arrow, "elm,state,right", "elm");
           arrow_y = (y - (arrow_h * 0.5));
-          arrow_x = (x - elm_finger_size_get() - arrow_w);
+          arrow_x = (x - elm_finger_size_get()-arrow_w);
           break;
        }
      case ELM_CTXPOPUP_ARROW_UP:
@@ -379,7 +381,7 @@ _update_arrow_obj(Evas_Object *obj, Elm_Ctxpopup_Arrow arrow_dir)
        {
           edje_object_signal_emit(wd->arrow, "elm,state,bottom", "elm");
           arrow_x = (x - (arrow_w * 0.5));
-          arrow_y = (y - elm_finger_size_get() - arrow_h);
+          arrow_y = (y - elm_finger_size_get()-arrow_h);
           break;
        }
      default:
@@ -395,7 +397,6 @@ _sizing_eval(Evas_Object *obj)
    Eina_List *elist;
    Elm_Ctxpopup_Item *item;
    Evas_Coord_Rectangle rect = { 0, 0, 1, 1 };
-   Elm_Ctxpopup_Arrow arrow;
 
    wd = (Widget_Data *) elm_widget_data_get(obj);
 
@@ -409,8 +410,7 @@ _sizing_eval(Evas_Object *obj)
 
    //base
    wd->arrow_dir = _calc_base_geometry(obj, &rect);
-
-   if (!wd->position_forced)
+   if ((!wd->position_forced) && (wd->arrow_dir != -1))
      {
        _update_arrow_obj(obj, wd->arrow_dir);
        _shift_base_by_arrow(wd->arrow, wd->arrow_dir, &rect);
@@ -641,13 +641,14 @@ _show_effect_done(void *data, Elm_Transit *transit)
        elm_transit_completion_callback_set(transit, NULL, NULL);
        elm_transit_del(transit);
        edje_object_signal_emit(wd->base, "elm,state,show", "elm");
+       wd->transit = NULL;
 }
 
 static void
 _show_effect(Widget_Data* wd)
 {
-       //TODO: THIS FUNCTION IS TEMPORARY. It should be implemented on the edje.
-       Elm_Transit* transit;
+       //TODO: THIS FUNCTION IS TEMPORARY. It should be implemented in the edc
+       if(wd->transit) return ;
 
        if(wd->box)
                evas_object_color_set(wd->box, 0, 0, 0, 0 );
@@ -656,12 +657,12 @@ _show_effect(Widget_Data* wd)
        if(wd->btn_layout)
                evas_object_color_set(wd->btn_layout, 0, 0, 0, 0);
 
-       transit = elm_transit_add(wd->base);
-       elm_transit_fx_insert(transit, elm_fx_color_add( wd->base, 0, 0, 0, 0, 255, 255, 255, 255 ) );
-       elm_transit_fx_insert(transit, elm_fx_wipe_add( wd->base, ELM_FX_WIPE_TYPE_SHOW, wd->arrow_dir) );
-       elm_transit_curve_style_set( transit, ELM_ANIMATOR_CURVE_OUT);
-       elm_transit_completion_callback_set( transit, _show_effect_done, wd);
-       elm_transit_run(transit, 0.5 );
+       wd->transit = elm_transit_add(wd->base);
+       elm_transit_fx_insert(wd->transit, elm_fx_color_add( wd->base, 0, 0, 0, 0, 255, 255, 255, 255 ) );
+       elm_transit_fx_insert(wd->transit, elm_fx_wipe_add( wd->base, ELM_FX_WIPE_TYPE_SHOW, wd->arrow_dir) );
+       elm_transit_curve_style_set(wd->transit, ELM_ANIMATOR_CURVE_OUT);
+       elm_transit_completion_callback_set(wd->transit, _show_effect_done, wd);
+       elm_transit_run(wd->transit, 0.3 );
 }
 
 static void
@@ -686,6 +687,10 @@ _ctxpopup_move(void *data, Evas *e, Evas_Object *obj, void *event_info)
 
    if (!wd)
       return;
+
+   if( wd->visible && !wd->position_forced)
+          evas_object_show(wd->arrow);
+
    _sizing_eval(obj);
 }
 
@@ -824,6 +829,7 @@ elm_ctxpopup_add(Evas_Object *parent)
                                   _bg_clicked_cb, obj);
 
    //Base
+
    wd->base = edje_object_add(e);
    elm_widget_sub_object_add(obj, wd->base);
    _elm_theme_object_set(obj, wd->base, "ctxpopup", "base",
@@ -1265,6 +1271,8 @@ elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content)
           wd->content = content;
           edje_object_signal_emit(wd->base, "elm,state,content,enable", "elm");
 
+          elm_ctxpopup_scroller_disabled_set(obj, EINA_TRUE);
+
           if(wd->visible)
                   _sizing_eval(obj);
 }
@@ -1293,6 +1301,8 @@ elm_ctxpopup_content_unset(Evas_Object *obj)
           elm_widget_sub_object_del(obj, content);
           edje_object_signal_emit(wd->base, "elm,state,content,disable", "elm");
 
+          elm_ctxpopup_scroller_disabled_set(obj, EINA_FALSE);
+
           if(wd->visible)
                   _sizing_eval(obj);
 
index 114e8fc..91fc585 100644 (file)
@@ -238,7 +238,7 @@ _item_sizing_eval(Item *it)
        }
        if (it->title_list)
        {       
-               it->title_w = w - it->fn_btn1_w - it->fn_btn2_w -it->fn_btn3_w - pad_count * pad;
+               it->title_w = _set_button_width(it->title_obj);
                it->title_obj = _multiple_object_set(it->obj, it->title_obj, it->title_list, it->title_w);
                evas_object_resize(it->title_obj, it->title_w, height);
                evas_object_size_hint_min_set(it->title_obj, it->title_w, height);
@@ -331,7 +331,6 @@ _transition_complete_cb(void *data)
                }
        }
        edje_object_message_signal_process(wd->base);
-       free(cb);
        evas_object_smart_callback_call(it->obj, "updated", it->content);
 }
 
@@ -436,7 +435,7 @@ _multiple_object_set(Evas_Object *obj, Evas_Object *sub_obj, Eina_List *list, in
        {
                new_obj = elm_layout_add(obj);
                elm_widget_sub_object_add(obj, new_obj);
-               elm_layout_theme_set(new_obj, "navigationbar", "title", "default");
+               elm_layout_theme_set(new_obj, "navigationbar", "title", elm_widget_style_get(obj));
        }
        else 
                new_obj = sub_obj;
@@ -571,7 +570,7 @@ elm_navigationbar_push(Evas_Object *obj,
                }
                else
                {
-                       elm_button_label_set(it->back_btn, "< Prev.");
+                       elm_button_label_set(it->back_btn, "< Previous");
                }
                evas_object_smart_callback_add(it->back_btn, "clicked", _back_button_clicked, it); 
                _button_set(obj, NULL, it->back_btn, EINA_TRUE);
@@ -581,11 +580,10 @@ elm_navigationbar_push(Evas_Object *obj,
        edje_object_part_text_set(wd->base, "elm.text", title);
        _item_sizing_eval(it);
 
+       Transit_Cb_Data *cb = ELM_NEW(Transit_Cb_Data);         
        // unswallow items and start transition
        if (prev_it)
        {
-               Transit_Cb_Data *cb = ELM_NEW(Transit_Cb_Data);
-                               
                cb->prev_it = prev_it;
                cb->it = it;
                cb->pop = EINA_FALSE;
@@ -594,17 +592,15 @@ elm_navigationbar_push(Evas_Object *obj,
                else if (prev_it->back_btn) edje_object_part_unswallow(wd->base, prev_it->back_btn);
                if (prev_it->fn_btn2) edje_object_part_unswallow(wd->base, prev_it->fn_btn2);
                if (prev_it->fn_btn3) edje_object_part_unswallow(wd->base, prev_it->fn_btn3);
-               _transition_complete_cb(cb);
        }
        else  
        {
-               Transit_Cb_Data *cb = ELM_NEW(Transit_Cb_Data);
                cb->prev_it = NULL;
                cb->it = it;
-               cb->pop = EINA_FALSE;
-               _transition_complete_cb(cb);
+               cb->pop = EINA_FALSE;   
        }
-
+       _transition_complete_cb(cb);
+       free(cb);
        //push content to pager
        elm_pager_content_push(wd->pager, it->content); 
 
@@ -721,31 +717,22 @@ elm_navigationbar_to_content_pop(Evas_Object *obj,
        if (ll)
        {
                prev_it = ll->data;
-               ll = ll->prev;
+               ll =  ll->prev; 
                while (ll) 
                {
-                 it = ll->data;
-                       if (it->obj && (it->content == content)) 
-                       {
-                               //delete contents between the top and the inputted content
-                               ll = eina_list_last(wd->stack);
-
-                               while (ll)
-                               {
-                                 if (ll->data == it) break;
-                                       else 
-                                       {
-                                               _delete_item(ll->data);
-                                               wd->stack = eina_list_remove_list(wd->stack, ll);
-                                               break;
-                                       }
-                               ll =  ll->prev;
+                       it = ll->data;          
+                       if (it->obj && (it->content != content)) 
+                               { 
+                                       _delete_item(ll->data);
+                                       wd->stack = eina_list_remove_list(wd->stack, ll);
+                                       it = NULL;
                                }
-                               break;
+                       else
+                                break;
+                               ll =  ll->prev; 
                        }
-                       it = NULL;
                }
-       }
 
        if (prev_it && it) 
        {
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);