From 96ff415a026aafdf0f9dea466ffb577f361a0346 Mon Sep 17 00:00:00 2001 From: Viktor Kojouharov Date: Sun, 16 Oct 2011 14:53:27 +0000 Subject: [PATCH] fully remove the BG panning. add a float_set message directed towards the bg object on desk show SVN revision: 64102 --- src/bin/e_bg.c | 176 +----------------- src/bin/e_bg.h | 1 - src/bin/e_config.c | 12 -- src/bin/e_config.h | 3 - src/bin/e_desk.c | 21 ++- src/bin/e_zone.c | 13 -- src/bin/e_zone.h | 1 - src/modules/conf_display/e_int_config_desks.c | 38 ---- 8 files changed, 13 insertions(+), 252 deletions(-) diff --git a/src/bin/e_bg.c b/src/bin/e_bg.c index 0bef1e1c0..55e7c7267 100644 --- a/src/bin/e_bg.c +++ b/src/bin/e_bg.c @@ -3,7 +3,6 @@ /* local subsystem functions */ static void _e_bg_signal(void *data, Evas_Object *obj, const char *emission, const char *source); static void _e_bg_event_bg_update_free(void *data, void *event); -static Eina_Bool _e_bg_slide_animator(void *data); static void _e_bg_image_import_dialog_done(void *data, const char *path, Eina_Bool ok, Eina_Bool external, int quality, E_Image_Import_Mode mode); static void _e_bg_image_import_done(void *data, Eina_Bool ok, const char *image_path, const char *edje_path); @@ -13,21 +12,6 @@ static void _e_bg_handler_image_imported(void *data, const char *image_path); EAPI int E_EVENT_BG_UPDATE = 0; static E_Fm2_Mime_Handler *bg_hdl = NULL; -typedef struct _E_Bg_Anim_Params E_Bg_Anim_Params; -struct _E_Bg_Anim_Params -{ - E_Zone *zone; - double start_time; - int start_x; - int start_y; - int end_x; - int end_y; - - struct { - Eina_Bool x, y; - } freedom; -}; - struct _E_Bg_Image_Import_Handle { struct { @@ -244,7 +228,6 @@ e_bg_zone_update(E_Zone *zone, E_Bg_Transition transition) else if (transition == E_BG_TRANSITION_DESK) trans = e_config->transition_desk; else if (transition == E_BG_TRANSITION_CHANGE) trans = e_config->transition_change; if ((!trans) || (!trans[0])) transition = E_BG_TRANSITION_NONE; - if (e_config->desk_flip_pan_bg) transition = E_BG_TRANSITION_NONE; desk = e_desk_current_get(zone); if (desk) @@ -257,7 +240,7 @@ e_bg_zone_update(E_Zone *zone, E_Bg_Transition transition) const char *pfile = ""; edje_object_file_get(zone->bg_object, &pfile, NULL); - if ((!e_util_strcmp(pfile, bgfile)) && !e_config->desk_flip_pan_bg) return; + if (!e_util_strcmp(pfile, bgfile)) return; } if (transition == E_BG_TRANSITION_NONE) @@ -317,30 +300,6 @@ e_bg_zone_update(E_Zone *zone, E_Bg_Transition transition) } evas_object_clip_set(o, zone->bg_clip_object); evas_object_show(o); - if (e_config->desk_flip_pan_bg) - { - int x = 0, y = 0; - - o = zone->bg_scrollframe; - if (!o) - { - o = e_scrollframe_add(zone->container->bg_evas); - zone->bg_scrollframe = o; - e_scrollframe_custom_theme_set(o, "base/theme/background", - "e/desktop/background/scrollframe"); - e_scrollframe_policy_set(o, E_SCROLLFRAME_POLICY_OFF, E_SCROLLFRAME_POLICY_OFF); - e_scrollframe_child_pos_set(o, 0, 0); - evas_object_show(o); - } - e_scrollframe_child_set(o, zone->bg_object); - if (desk) - { - x = desk->x; - y = desk->y; - } - e_bg_zone_slide(zone, x, y); - return; - } if (transition != E_BG_TRANSITION_NONE) { @@ -356,71 +315,6 @@ e_bg_zone_update(E_Zone *zone, E_Bg_Transition transition) } } -EAPI void -e_bg_zone_slide(E_Zone *zone, int prev_x, int prev_y) -{ - Evas_Object *o; - E_Desk *desk; - Evas_Coord w, h, maxw, maxh, step_w, step_h; - Ecore_Animator *anim; - E_Bg_Anim_Params *params; - Evas_Coord vw, vh, px, py; - int fx, fy; - const void *data; - - desk = e_desk_current_get(zone); - edje_object_size_max_get(zone->bg_object, &w, &h); - maxw = zone->w * zone->desk_x_count; - maxh = zone->h * zone->desk_y_count; - if (!w) w = maxw; - if (!h) h = maxh; - evas_object_resize(zone->bg_object, w, h); - if (zone->desk_x_count > 1) - step_w = ((double) (w - zone->w)) / (zone->desk_x_count - 1); - else step_w = 0; - if (zone->desk_y_count > 1) - step_h = ((double) (h - zone->h)) / (zone->desk_y_count - 1); - else step_h = 0; - - o = zone->bg_scrollframe; - evas_object_move(o, zone->x, zone->y); - evas_object_resize(o, zone->w, zone->h); - evas_object_layer_set(o, -1); - evas_object_clip_set(o, zone->bg_clip_object); - - data = edje_object_data_get(zone->bg_object, "directional_freedom"); - e_scrollframe_child_viewport_size_get(o, &vw, &vh); - e_scrollframe_child_pos_get(o, &px, &py); - params = evas_object_data_get(zone->bg_object, "switch_animator_params"); - if (!params) - params = E_NEW(E_Bg_Anim_Params, 1); - params->zone = zone; - params->start_x = px; - params->start_y = py; - params->end_x = desk->x * step_w * e_config->desk_flip_pan_x_axis_factor; - params->end_y = desk->y * step_h * e_config->desk_flip_pan_y_axis_factor; - params->start_time = 0.0; - if ((data) && (sscanf(data, "%d %d", &fx, &fy) == 2)) - { - if (fx) - { - params->freedom.x = EINA_TRUE; - params->start_x = prev_x * step_w * e_config->desk_flip_pan_x_axis_factor; - } - if (fy) - { - params->freedom.y = EINA_TRUE; - params->start_y = prev_y * step_h * e_config->desk_flip_pan_y_axis_factor; - } - } - - anim = evas_object_data_get(zone->bg_object, "switch_animator"); - if (anim) ecore_animator_del(anim); - anim = ecore_animator_add(_e_bg_slide_animator, params); - evas_object_data_set(zone->bg_object, "switch_animator", anim); - evas_object_data_set(zone->bg_object, "switch_animator_params", params); -} - EAPI void e_bg_default_set(const char *file) { @@ -763,74 +657,6 @@ _e_bg_event_bg_update_free(void *data __UNUSED__, void *event) free(event); } -static Eina_Bool -_e_bg_slide_animator(void *data) -{ - E_Bg_Anim_Params *params; - E_Zone *zone; - Evas_Object *o; - double st; - double t, dt, spd; - Evas_Coord px, py, rx, ry, bw, bh, panw, panh; - Edje_Message_Int_Set *msg; - - params = data; - zone = params->zone; - t = ecore_loop_time_get(); - spd = e_config->desk_flip_animate_time; - - o = zone->bg_scrollframe; - if (!params->start_time) - st = params->start_time = t; - else - st = params->start_time; - - dt = (t - st) / spd; - if (dt > 1.0) dt = 1.0; - dt = 1.0 - dt; - dt *= dt; /* decelerate - could be a better hack */ - - if (params->end_x > params->start_x) - rx = params->start_x + (params->end_x - params->start_x) * (1.0 - dt); - else - rx = params->end_x + (params->start_x - params->end_x) * dt; - if (params->freedom.x) px = zone->x; - else px = rx; - - if (params->end_y > params->start_y) - ry = params->start_y + (params->end_y - params->start_y) * (1.0 - dt); - else - ry = params->end_y + (params->start_y - params->end_y) * dt; - if (params->freedom.y) py = zone->y; - else py = ry; - - e_scrollframe_child_pos_set(o, px, py); - - evas_object_geometry_get(zone->bg_object, NULL, NULL, &bw, &bh); - panw = bw - zone->w; - if (panw < 0) panw = 0; - panh = bh - zone->h; - if (panh < 0) panh = 0; - msg = alloca(sizeof(Edje_Message_Int_Set) + (5 * sizeof(int))); - msg->count = 6; - msg->val[0] = rx; - msg->val[1] = ry; - msg->val[2] = panw; - msg->val[3] = panh; - msg->val[4] = bw; - msg->val[5] = bh; - edje_object_message_send(zone->bg_object, EDJE_MESSAGE_INT_SET, 0, msg); - - if (dt <= 0.0) - { - evas_object_data_del(zone->bg_object, "switch_animator"); - evas_object_data_del(zone->bg_object, "switch_animator_params"); - E_FREE(params); - return ECORE_CALLBACK_CANCEL; - } - return ECORE_CALLBACK_RENEW; -} - static void _e_bg_image_import_dialog_done(void *data, const char *path, Eina_Bool ok, Eina_Bool external, int quality, E_Image_Import_Mode mode) { diff --git a/src/bin/e_bg.h b/src/bin/e_bg.h index 54e48cbb7..39df3491a 100644 --- a/src/bin/e_bg.h +++ b/src/bin/e_bg.h @@ -31,7 +31,6 @@ EINTERN int e_bg_shutdown(void); EAPI const E_Config_Desktop_Background *e_bg_config_get(int container_num, int zone_num, int desk_x, int desk_y); EAPI const char *e_bg_file_get(int container_num, int zone_num, int desk_x, int desk_y); EAPI void e_bg_zone_update(E_Zone *zone, E_Bg_Transition transition); -EAPI void e_bg_zone_slide(E_Zone *zone, int prev_x, int prev_y); EAPI void e_bg_add(int container, int zone, int desk_x, int desk_y, const char *file); EAPI void e_bg_del(int container, int zone, int desk_x, int desk_y); EAPI void e_bg_default_set(const char *file); diff --git a/src/bin/e_config.c b/src/bin/e_config.c index 4014c2f83..3592bf886 100644 --- a/src/bin/e_config.c +++ b/src/bin/e_config.c @@ -834,9 +834,6 @@ e_config_init(void) E_CONFIG_VAL(D, T, desk_flip_animate_mode, INT); E_CONFIG_VAL(D, T, desk_flip_animate_interpolation, INT); E_CONFIG_VAL(D, T, desk_flip_animate_time, DOUBLE); - E_CONFIG_VAL(D, T, desk_flip_pan_bg, UCHAR); - E_CONFIG_VAL(D, T, desk_flip_pan_x_axis_factor, DOUBLE); - E_CONFIG_VAL(D, T, desk_flip_pan_y_axis_factor, DOUBLE); E_CONFIG_VAL(D, T, wallpaper_import_last_dev, STR); E_CONFIG_VAL(D, T, wallpaper_import_last_path, STR); @@ -1164,12 +1161,6 @@ e_config_load(void) COPYVAL(screensaver_ask_presentation_timeout); IFCFGEND; - IFCFG(0x0133); - COPYVAL(desk_flip_pan_bg); - COPYVAL(desk_flip_pan_x_axis_factor); - COPYVAL(desk_flip_pan_y_axis_factor); - IFCFGEND; - IFCFG(0x0134); COPYVAL(exec.expire_timeout); COPYVAL(exec.show_run_dialog); @@ -1300,9 +1291,6 @@ e_config_load(void) E_CONFIG_LIMIT(e_config->desk_flip_wrap, 0, 1); E_CONFIG_LIMIT(e_config->fullscreen_flip, 0, 1); E_CONFIG_LIMIT(e_config->icon_theme_overrides, 0, 1); - E_CONFIG_LIMIT(e_config->desk_flip_pan_bg, 0, 1); - E_CONFIG_LIMIT(e_config->desk_flip_pan_x_axis_factor, 0.0, 1.0); - E_CONFIG_LIMIT(e_config->desk_flip_pan_y_axis_factor, 0.0, 1.0); E_CONFIG_LIMIT(e_config->remember_internal_windows, 0, 3); E_CONFIG_LIMIT(e_config->desk_auto_switch, 0, 1); diff --git a/src/bin/e_config.h b/src/bin/e_config.h index 74379e14a..123843b2f 100644 --- a/src/bin/e_config.h +++ b/src/bin/e_config.h @@ -263,9 +263,6 @@ struct _E_Config int desk_flip_animate_mode; // GUI int desk_flip_animate_interpolation; // GUI double desk_flip_animate_time; // GUI - unsigned char desk_flip_pan_bg; - double desk_flip_pan_x_axis_factor; - double desk_flip_pan_y_axis_factor; const char *wallpaper_import_last_dev; // INTERNAL const char *wallpaper_import_last_path; // INTERNAL diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index ed6c87b75..b140187a5 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -197,9 +197,10 @@ e_desk_show(E_Desk *desk) E_Event_Desk_Show *ev; E_Event_Desk_Before_Show *eev; E_Event_Desk_After_Show *eeev; + Edje_Message_Float_Set *msg; Eina_List *l; E_Shelf *es; - int was_zone = 0, x, y, dx = 0, dy = 0, prev_x = 0, prev_y = 0; + int was_zone = 0, x, y, dx = 0, dy = 0; E_OBJECT_CHECK(desk); E_OBJECT_TYPE_CHECK(desk, E_DESK_TYPE); @@ -222,8 +223,6 @@ e_desk_show(E_Desk *desk) if (desk2->visible) { desk2->visible = 0; - prev_x = desk2->x; - prev_y = desk2->y; dx = desk->x - desk2->x; dy = desk->y - desk2->y; if (e_config->desk_flip_animate_mode > 0) @@ -238,6 +237,15 @@ e_desk_show(E_Desk *desk) desk->zone->desk_y_current = desk->y; desk->visible = 1; + msg = alloca(sizeof(Edje_Message_Float_Set) + sizeof(double)); + msg->count = 1; + msg->val[0] = e_config->desk_flip_animate_time; + msg->val[1] = (double) desk->x; + msg->val[2] = (double) desk->zone->desk_x_count; + msg->val[3] = (double) desk->y; + msg->val[4] = (double) desk->zone->desk_y_count; + edje_object_message_send(desk->zone->bg_object, EDJE_MESSAGE_FLOAT_SET, 0, msg); + if (desk->zone->bg_object) was_zone = 1; if (e_config->desk_flip_animate_mode == 0) { @@ -266,12 +274,7 @@ e_desk_show(E_Desk *desk) } if (was_zone) - { - if (e_config->desk_flip_pan_bg) - e_bg_zone_slide(desk->zone, prev_x, prev_y); - else - e_bg_zone_update(desk->zone, E_BG_TRANSITION_DESK); - } + e_bg_zone_update(desk->zone, E_BG_TRANSITION_DESK); else e_bg_zone_update(desk->zone, E_BG_TRANSITION_START); diff --git a/src/bin/e_zone.c b/src/bin/e_zone.c index c9b21e82a..7f8952151 100644 --- a/src/bin/e_zone.c +++ b/src/bin/e_zone.c @@ -282,8 +282,6 @@ e_zone_move(E_Zone *zone, zone->x = x; zone->y = y; evas_object_move(zone->bg_object, x, y); - if (zone->bg_scrollframe) - evas_object_move(zone->bg_scrollframe, x, y); evas_object_move(zone->bg_event_object, x, y); evas_object_move(zone->bg_clip_object, x, y); @@ -315,8 +313,6 @@ e_zone_resize(E_Zone *zone, zone->w = w; zone->h = h; evas_object_resize(zone->bg_object, w, h); - if (zone->bg_scrollframe) - evas_object_resize(zone->bg_scrollframe, w, h); evas_object_resize(zone->bg_event_object, w, h); evas_object_resize(zone->bg_clip_object, w, h); @@ -356,13 +352,9 @@ e_zone_move_resize(E_Zone *zone, zone->h = h; evas_object_move(zone->bg_object, x, y); - if (zone->bg_scrollframe) - evas_object_move(zone->bg_scrollframe, x, y); evas_object_move(zone->bg_event_object, x, y); evas_object_move(zone->bg_clip_object, x, y); evas_object_resize(zone->bg_object, w, h); - if (zone->bg_scrollframe) - evas_object_resize(zone->bg_scrollframe, w, h); evas_object_resize(zone->bg_event_object, w, h); evas_object_resize(zone->bg_clip_object, w, h); @@ -1480,14 +1472,9 @@ _e_zone_free(E_Zone *zone) con = zone->container; if (zone->name) eina_stringshare_del(zone->name); con->zones = eina_list_remove(con->zones, zone); - anim = evas_object_data_get(zone->bg_object, "switch_animator"); - if (anim) ecore_animator_del(anim); - data = evas_object_data_get(zone->bg_object, "switch_animator_params"); - if (data) E_FREE(data); evas_object_del(zone->bg_event_object); evas_object_del(zone->bg_clip_object); evas_object_del(zone->bg_object); - evas_object_del(zone->bg_scrollframe); if (zone->prev_bg_object) evas_object_del(zone->prev_bg_object); if (zone->transition_object) evas_object_del(zone->transition_object); diff --git a/src/bin/e_zone.h b/src/bin/e_zone.h index f0c5d701f..be902c6c1 100644 --- a/src/bin/e_zone.h +++ b/src/bin/e_zone.h @@ -45,7 +45,6 @@ struct _E_Zone Evas_Object *bg_event_object; Evas_Object *bg_clip_object; Evas_Object *prev_bg_object; - Evas_Object *bg_scrollframe; Evas_Object *transition_object; int desk_x_count, desk_y_count; diff --git a/src/modules/conf_display/e_int_config_desks.c b/src/modules/conf_display/e_int_config_desks.c index 2bd3e9e0b..1aa68330a 100644 --- a/src/modules/conf_display/e_int_config_desks.c +++ b/src/modules/conf_display/e_int_config_desks.c @@ -19,10 +19,7 @@ struct _E_Config_Dialog_Data int flip_wrap; int flip_mode; int flip_interp; - int flip_pan_bg; double flip_speed; - double x_axis_pan; - double y_axis_pan; /*- GUI -*/ Evas_Object *preview; @@ -65,10 +62,7 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->flip_wrap = e_config->desk_flip_wrap; cfdata->flip_mode = e_config->desk_flip_animate_mode; cfdata->flip_interp = e_config->desk_flip_animate_interpolation; - cfdata->flip_pan_bg = e_config->desk_flip_pan_bg; cfdata->flip_speed = e_config->desk_flip_animate_time; - cfdata->x_axis_pan = e_config->desk_flip_pan_x_axis_factor; - cfdata->y_axis_pan = e_config->desk_flip_pan_y_axis_factor; } static void * @@ -106,10 +100,7 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata) e_config->desk_flip_animate_mode = cfdata->flip_mode; e_config->desk_flip_animate_interpolation = cfdata->flip_interp; - e_config->desk_flip_pan_bg = cfdata->flip_pan_bg; e_config->desk_flip_animate_time = cfdata->flip_speed; - e_config->desk_flip_pan_x_axis_factor = cfdata->x_axis_pan; - e_config->desk_flip_pan_y_axis_factor = cfdata->y_axis_pan; e_config->edge_flip_dragging = cfdata->edge_flip_dragging; e_config->desk_flip_wrap = cfdata->flip_wrap; @@ -139,10 +130,7 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfda return ((e_config->desk_flip_animate_mode != cfdata->flip_mode) || (e_config->desk_flip_animate_interpolation != cfdata->flip_interp) || - (e_config->desk_flip_pan_bg != cfdata->flip_pan_bg) || (e_config->desk_flip_animate_time != cfdata->flip_speed) || - (e_config->desk_flip_pan_x_axis_factor != cfdata->x_axis_pan) || - (e_config->desk_flip_pan_y_axis_factor != cfdata->y_axis_pan) || (e_config->edge_flip_dragging != cfdata->edge_flip_dragging) || (e_config->desk_flip_wrap != cfdata->flip_wrap)); } @@ -203,13 +191,6 @@ _basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dial e_widget_on_change_hook_set(ob, _cb_disable_flip_anim, cfdata); e_widget_list_object_append(o, ob, 1, 0, 0.5); -/* this is broken in e so disable in config dialog. - ob = e_widget_check_add(evas, _("Background panning"), - &(cfdata->flip_pan_bg)); - e_widget_disabled_set(ob, !cfdata->flip_mode); - cfdata->flip_anim_list = eina_list_append(cfdata->flip_anim_list, ob); - e_widget_list_object_append(o, ob, 1, 0, 0.5); - */ ob = e_widget_label_add(evas, _("Animation speed")); cfdata->flip_anim_list = eina_list_append(cfdata->flip_anim_list, ob); e_widget_list_object_append(o, ob, 1, 0, 0.5); @@ -218,25 +199,6 @@ _basic_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dial e_widget_disabled_set(ob, !cfdata->flip_mode); cfdata->flip_anim_list = eina_list_append(cfdata->flip_anim_list, ob); e_widget_list_object_append(o, ob, 1, 0, 0.5); -/* - ob = e_widget_label_add(evas, _("X-Axis pan factor")); - cfdata->flip_anim_list = eina_list_append(cfdata->flip_anim_list, ob); - e_widget_list_object_append(o, ob, 1, 0, 0.5); - ob = e_widget_slider_add(evas, 1, 0, _("%.2f"), 0, 1, 0.01, 0, - &(cfdata->x_axis_pan), NULL, 150); - e_widget_disabled_set(ob, !cfdata->flip_mode); - e_widget_list_object_append(o, ob, 1, 0, 0.5); - cfdata->flip_anim_list = eina_list_append(cfdata->flip_anim_list, ob); - - ob = e_widget_label_add(evas, _("Y-Axis pan factor")); - cfdata->flip_anim_list = eina_list_append(cfdata->flip_anim_list, ob); - e_widget_list_object_append(o, ob, 1, 0, 0.5); - ob = e_widget_slider_add(evas, 1, 0, _("%.2f"), 0, 1, 0.01, 0, - &(cfdata->y_axis_pan), NULL, 150); - e_widget_disabled_set(ob, !cfdata->flip_mode); - e_widget_list_object_append(o, ob, 1, 0, 0.5); - cfdata->flip_anim_list = eina_list_append(cfdata->flip_anim_list, ob); - */ e_widget_toolbook_page_append(otb, NULL, _("Flip Animation"), o, 1, 0, 1, 0, 0.5, 0.0);