+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
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
*/
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);
Evas_Object *touch_area;
int colorpicker_num;
int button_state;
+ int feed_cnt;
};
typedef struct _Widget_Data Widget_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,
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;
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
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)
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
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);
}
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);
}
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);
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);
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);
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);
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;
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,
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])
}
//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;
{
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:
{
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:
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);
//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);
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 );
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
if (!wd)
return;
+
+ if( wd->visible && !wd->position_forced)
+ evas_object_show(wd->arrow);
+
_sizing_eval(obj);
}
_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",
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);
}
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);
}
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);
}
}
edje_object_message_signal_process(wd->base);
- free(cb);
evas_object_smart_callback_call(it->obj, "updated", it->content);
}
{
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;
}
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);
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;
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);
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)
{
struct _Widget_Data
{
Evas_Object *webkit;
- Eina_Bool auto_fitting:1;
};
static const char *widtype = NULL;
}
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
}
/**
- * 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
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 *);
int w, h;
} layout;
- Eina_Bool auto_fitting;
Ecore_Animator* smart_zoom_animator;
Evas_Point pan_s;
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
}
#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
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);
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);