forked from enlightenment/enlightenment
'everything' readd smooth scroll option
SVN revision: 47911
This commit is contained in:
parent
a074d3fd14
commit
6d73f126f9
|
@ -225,49 +225,6 @@ struct _Evry_State
|
||||||
Evry_View *view;
|
Evry_View *view;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _Config
|
|
||||||
{
|
|
||||||
int version;
|
|
||||||
/* position */
|
|
||||||
double rel_x, rel_y;
|
|
||||||
/* size */
|
|
||||||
int width, height;
|
|
||||||
|
|
||||||
Eina_List *modules;
|
|
||||||
|
|
||||||
/* generic plugin config */
|
|
||||||
Eina_List *conf_subjects;
|
|
||||||
Eina_List *conf_actions;
|
|
||||||
Eina_List *conf_objects;
|
|
||||||
Eina_List *conf_views;
|
|
||||||
|
|
||||||
int scroll_animate;
|
|
||||||
double scroll_speed;
|
|
||||||
|
|
||||||
int hide_input;
|
|
||||||
int hide_list;
|
|
||||||
|
|
||||||
int quick_nav;
|
|
||||||
|
|
||||||
const char *cmd_terminal;
|
|
||||||
const char *cmd_sudo;
|
|
||||||
|
|
||||||
int view_mode;
|
|
||||||
int view_zoom;
|
|
||||||
|
|
||||||
int history_sort_mode;
|
|
||||||
|
|
||||||
/* use up/down keys for prev/next in thumb view */
|
|
||||||
int cycle_mode;
|
|
||||||
|
|
||||||
/* not saved data */
|
|
||||||
Eina_List *plugins;
|
|
||||||
Eina_List *actions;
|
|
||||||
Eina_List *views;
|
|
||||||
|
|
||||||
int min_w, min_h;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Evry_View
|
struct _Evry_View
|
||||||
{
|
{
|
||||||
Evry_View *id;
|
Evry_View *id;
|
||||||
|
@ -315,6 +272,49 @@ struct _Evry_Action
|
||||||
int priority;
|
int priority;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _Config
|
||||||
|
{
|
||||||
|
int version;
|
||||||
|
/* position */
|
||||||
|
double rel_x, rel_y;
|
||||||
|
/* size */
|
||||||
|
int width, height;
|
||||||
|
|
||||||
|
Eina_List *modules;
|
||||||
|
|
||||||
|
/* generic plugin config */
|
||||||
|
Eina_List *conf_subjects;
|
||||||
|
Eina_List *conf_actions;
|
||||||
|
Eina_List *conf_objects;
|
||||||
|
Eina_List *conf_views;
|
||||||
|
|
||||||
|
int scroll_animate;
|
||||||
|
double scroll_speed;
|
||||||
|
|
||||||
|
int hide_input;
|
||||||
|
int hide_list;
|
||||||
|
|
||||||
|
int quick_nav;
|
||||||
|
|
||||||
|
const char *cmd_terminal;
|
||||||
|
const char *cmd_sudo;
|
||||||
|
|
||||||
|
int view_mode;
|
||||||
|
int view_zoom;
|
||||||
|
|
||||||
|
int history_sort_mode;
|
||||||
|
|
||||||
|
/* use up/down keys for prev/next in thumb view */
|
||||||
|
int cycle_mode;
|
||||||
|
|
||||||
|
/* not saved data */
|
||||||
|
Eina_List *plugins;
|
||||||
|
Eina_List *actions;
|
||||||
|
Eina_List *views;
|
||||||
|
|
||||||
|
int min_w, min_h;
|
||||||
|
};
|
||||||
|
|
||||||
struct _History_Entry
|
struct _History_Entry
|
||||||
{
|
{
|
||||||
Eina_List *items;
|
Eina_List *items;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
/* #undef DBG
|
/* #undef DBG
|
||||||
* #define DBG(...) ERR(__VA_ARGS__) */
|
* #define DBG(...) ERR(__VA_ARGS__) */
|
||||||
|
|
||||||
#define CONFIG_VERSION 7
|
#define CONFIG_VERSION 8
|
||||||
|
|
||||||
/* actual module specifics */
|
/* actual module specifics */
|
||||||
static void _e_mod_action_cb(E_Object *obj, const char *params);
|
static void _e_mod_action_cb(E_Object *obj, const char *params);
|
||||||
|
@ -217,6 +217,12 @@ _config_init()
|
||||||
#undef D
|
#undef D
|
||||||
evry_conf = e_config_domain_load("module.everything", conf_edd);
|
evry_conf = e_config_domain_load("module.everything", conf_edd);
|
||||||
|
|
||||||
|
if (evry_conf && evry_conf->version == 7)
|
||||||
|
{
|
||||||
|
evry_conf->scroll_speed = 10.0;
|
||||||
|
evry_conf->version = CONFIG_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
if (evry_conf && evry_conf->version != CONFIG_VERSION)
|
if (evry_conf && evry_conf->version != CONFIG_VERSION)
|
||||||
{
|
{
|
||||||
_config_free();
|
_config_free();
|
||||||
|
@ -232,7 +238,7 @@ _config_init()
|
||||||
evry_conf->width = 0;
|
evry_conf->width = 0;
|
||||||
evry_conf->height = 0;
|
evry_conf->height = 0;
|
||||||
evry_conf->scroll_animate = 0;
|
evry_conf->scroll_animate = 0;
|
||||||
evry_conf->scroll_speed = 0.08;
|
evry_conf->scroll_speed = 10.0;
|
||||||
evry_conf->hide_input = 0;
|
evry_conf->hide_input = 0;
|
||||||
evry_conf->hide_list = 0;
|
evry_conf->hide_list = 0;
|
||||||
evry_conf->quick_nav = 1;
|
evry_conf->quick_nav = 1;
|
||||||
|
|
|
@ -16,6 +16,7 @@ struct _E_Config_Dialog_Data
|
||||||
int width, height;
|
int width, height;
|
||||||
double rel_x, rel_y;
|
double rel_x, rel_y;
|
||||||
int scroll_animate;
|
int scroll_animate;
|
||||||
|
double scroll_speed;
|
||||||
|
|
||||||
char *cmd_terminal;
|
char *cmd_terminal;
|
||||||
char *cmd_sudo;
|
char *cmd_sudo;
|
||||||
|
@ -76,6 +77,8 @@ _fill_data(E_Config_Dialog_Data *cfdata)
|
||||||
C(view_zoom);
|
C(view_zoom);
|
||||||
C(cycle_mode);
|
C(cycle_mode);
|
||||||
C(history_sort_mode);
|
C(history_sort_mode);
|
||||||
|
C(scroll_animate);
|
||||||
|
C(scroll_speed);
|
||||||
#undef C
|
#undef C
|
||||||
|
|
||||||
EINA_LIST_FOREACH(evry_conf->plugins, l, p)
|
EINA_LIST_FOREACH(evry_conf->plugins, l, p)
|
||||||
|
@ -138,6 +141,8 @@ _basic_apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
|
||||||
C(view_zoom);
|
C(view_zoom);
|
||||||
C(cycle_mode);
|
C(cycle_mode);
|
||||||
C(history_sort_mode);
|
C(history_sort_mode);
|
||||||
|
C(scroll_animate);
|
||||||
|
C(scroll_speed);
|
||||||
#undef C
|
#undef C
|
||||||
|
|
||||||
evry_conf->plugins = eina_list_sort(evry_conf->plugins, -1,
|
evry_conf->plugins = eina_list_sort(evry_conf->plugins, -1,
|
||||||
|
@ -262,6 +267,13 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
||||||
e_widget_radio_toggle_set(ob, (cfdata->view_mode == 1));
|
e_widget_radio_toggle_set(ob, (cfdata->view_mode == 1));
|
||||||
e_widget_framelist_object_append(of, ob);
|
e_widget_framelist_object_append(of, ob);
|
||||||
|
|
||||||
|
ob = e_widget_check_add(evas, _("Animate scrolling"),
|
||||||
|
&(cfdata->scroll_animate));
|
||||||
|
e_widget_framelist_object_append(of, ob);
|
||||||
|
ob = e_widget_slider_add(evas, 1, 0, _("%1.1f"),
|
||||||
|
5, 20, 0.1, 0, &(cfdata->scroll_speed), NULL, 10);
|
||||||
|
e_widget_framelist_object_append(of, ob);
|
||||||
|
|
||||||
ob = e_widget_check_add(evas, _("Up/Down select next item in icon view"),
|
ob = e_widget_check_add(evas, _("Up/Down select next item in icon view"),
|
||||||
&(cfdata->cycle_mode));
|
&(cfdata->cycle_mode));
|
||||||
e_widget_framelist_object_append(of, ob);
|
e_widget_framelist_object_append(of, ob);
|
||||||
|
|
|
@ -30,7 +30,6 @@ struct _Smart_Data
|
||||||
Ecore_Idle_Enterer *idle_enter;
|
Ecore_Idle_Enterer *idle_enter;
|
||||||
Ecore_Idle_Enterer *thumb_idler;
|
Ecore_Idle_Enterer *thumb_idler;
|
||||||
Ecore_Idle_Enterer *update_idler;
|
Ecore_Idle_Enterer *update_idler;
|
||||||
Ecore_Animator *animator;
|
|
||||||
Evas_Coord x, y, w, h;
|
Evas_Coord x, y, w, h;
|
||||||
Evas_Coord cx, cy, cw, ch;
|
Evas_Coord cx, cy, cw, ch;
|
||||||
Evas_Coord sx, sy;
|
Evas_Coord sx, sy;
|
||||||
|
@ -38,6 +37,11 @@ struct _Smart_Data
|
||||||
Eina_Bool update : 1;
|
Eina_Bool update : 1;
|
||||||
Eina_Bool switch_mode : 1;
|
Eina_Bool switch_mode : 1;
|
||||||
Eina_List *queue;
|
Eina_List *queue;
|
||||||
|
|
||||||
|
double scroll_align;
|
||||||
|
double scroll_align_to;
|
||||||
|
int scroll_to;
|
||||||
|
Ecore_Animator *animator;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _Item
|
struct _Item
|
||||||
|
@ -313,6 +317,9 @@ _e_smart_reconfigure_do(void *data)
|
||||||
edje_object_signal_emit(it->frame, "e,state,browseable", "e");
|
edje_object_signal_emit(it->frame, "e,state,browseable", "e");
|
||||||
|
|
||||||
it->visible = EINA_TRUE;
|
it->visible = EINA_TRUE;
|
||||||
|
|
||||||
|
if (it->selected)
|
||||||
|
edje_object_signal_emit(it->frame, "e,state,selected", "e");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!eina_list_data_find(sd->queue, it))
|
if (!eina_list_data_find(sd->queue, it))
|
||||||
|
@ -323,9 +330,10 @@ _e_smart_reconfigure_do(void *data)
|
||||||
evas_object_move(it->frame, xx, yy);
|
evas_object_move(it->frame, xx, yy);
|
||||||
evas_object_resize(it->frame, it->w, it->h);
|
evas_object_resize(it->frame, it->w, it->h);
|
||||||
|
|
||||||
|
|
||||||
/* if (sd->update || it->changed)
|
/* if (sd->update || it->changed)
|
||||||
* {
|
* {
|
||||||
* if (it->selected && sd->view->zoom < 2)
|
* if (it->selected)
|
||||||
* edje_object_signal_emit(it->frame, "e,state,selected", "e");
|
* edje_object_signal_emit(it->frame, "e,state,selected", "e");
|
||||||
* else
|
* else
|
||||||
* edje_object_signal_emit(it->frame, "e,state,unselected", "e");
|
* edje_object_signal_emit(it->frame, "e,state,unselected", "e");
|
||||||
|
@ -392,6 +400,8 @@ _e_smart_del(Evas_Object *obj)
|
||||||
ecore_idle_enterer_del(sd->idle_enter);
|
ecore_idle_enterer_del(sd->idle_enter);
|
||||||
if (sd->thumb_idler)
|
if (sd->thumb_idler)
|
||||||
ecore_idle_enterer_del(sd->thumb_idler);
|
ecore_idle_enterer_del(sd->thumb_idler);
|
||||||
|
if (sd->animator)
|
||||||
|
ecore_animator_del(sd->animator);
|
||||||
|
|
||||||
// sd->view is just referenced
|
// sd->view is just referenced
|
||||||
// sd->child_obj is unused
|
// sd->child_obj is unused
|
||||||
|
@ -564,11 +574,40 @@ _pan_item_remove(Evas_Object *obj, Item *it)
|
||||||
_e_smart_reconfigure(obj);
|
_e_smart_reconfigure(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_animator(void *data)
|
||||||
|
{
|
||||||
|
Smart_Data *sd = data;
|
||||||
|
|
||||||
|
if (sd->scroll_to)
|
||||||
|
{
|
||||||
|
double da;
|
||||||
|
|
||||||
|
double spd = 10.0 / e_config->framerate;
|
||||||
|
|
||||||
|
sd->scroll_align = (sd->scroll_align * (1.0 - spd)) + (sd->scroll_align_to * spd);
|
||||||
|
|
||||||
|
da = sd->scroll_align - sd->scroll_align_to;
|
||||||
|
if (da < 0.0) da = -da;
|
||||||
|
if (da < 0.01)
|
||||||
|
{
|
||||||
|
sd->scroll_align = sd->scroll_align_to;
|
||||||
|
sd->scroll_to = 0;
|
||||||
|
}
|
||||||
|
e_scrollframe_child_pos_set(sd->view->sframe, 0, sd->scroll_align);
|
||||||
|
|
||||||
|
/* e_box_align_set(eap_list_object, 0.5, eap_scroll_align); */
|
||||||
|
}
|
||||||
|
if (sd->scroll_to) return 1;
|
||||||
|
sd->animator = NULL;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_pan_item_select(Evas_Object *obj, Item *it)
|
_pan_item_select(Evas_Object *obj, Item *it)
|
||||||
{
|
{
|
||||||
Smart_Data *sd = evas_object_smart_data_get(obj);
|
Smart_Data *sd = evas_object_smart_data_get(obj);
|
||||||
int align = -1;
|
double align = -1;
|
||||||
|
|
||||||
if (sd->cur_item)
|
if (sd->cur_item)
|
||||||
{
|
{
|
||||||
|
@ -590,8 +629,23 @@ _pan_item_select(Evas_Object *obj, Item *it)
|
||||||
else if (it->y < sd->cy)
|
else if (it->y < sd->cy)
|
||||||
align = it->y;
|
align = it->y;
|
||||||
|
|
||||||
|
e_scrollframe_child_pos_get(sd->view->sframe, 0, (Evas_Coord *)&sd->scroll_align);
|
||||||
|
|
||||||
|
if (align >= 0)
|
||||||
|
{
|
||||||
|
if (!evry_conf->scroll_animate)
|
||||||
|
{
|
||||||
if (align >= 0)
|
if (align >= 0)
|
||||||
e_scrollframe_child_pos_set(sd->view->sframe, 0, align);
|
e_scrollframe_child_pos_set(sd->view->sframe, 0, align);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sd->scroll_align_to = align;
|
||||||
|
sd->scroll_to = 1;
|
||||||
|
if (!sd->animator)
|
||||||
|
sd->animator = ecore_animator_add(_animator, sd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (sd->view->zoom < 2)
|
if (sd->view->zoom < 2)
|
||||||
edje_object_signal_emit(sd->cur_item->frame, "e,state,selected", "e");
|
edje_object_signal_emit(sd->cur_item->frame, "e,state,selected", "e");
|
||||||
|
@ -608,6 +662,10 @@ _clear_items(Evas_Object *obj)
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
Item *it;
|
Item *it;
|
||||||
|
|
||||||
|
if (sd->animator)
|
||||||
|
ecore_animator_del(sd->animator);
|
||||||
|
sd->animator = NULL;
|
||||||
|
|
||||||
EINA_LIST_FOREACH(sd->items, l, it)
|
EINA_LIST_FOREACH(sd->items, l, it)
|
||||||
{
|
{
|
||||||
if (it->do_thumb)
|
if (it->do_thumb)
|
||||||
|
@ -666,11 +724,13 @@ static int
|
||||||
_update_frame(Evas_Object *obj)
|
_update_frame(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
Smart_Data *sd = evas_object_smart_data_get(obj);
|
Smart_Data *sd = evas_object_smart_data_get(obj);
|
||||||
//sd->switch_mode = EINA_TRUE;
|
/* sd->switch_mode = EINA_TRUE; */
|
||||||
_e_smart_reconfigure_do(obj);
|
_e_smart_reconfigure_do(obj);
|
||||||
//sd->switch_mode = EINA_FALSE;
|
/* sd->switch_mode = EINA_FALSE; */
|
||||||
|
int tmp = evry_conf->scroll_animate;
|
||||||
|
evry_conf->scroll_animate = 0;
|
||||||
_pan_item_select(obj, sd->cur_item);
|
_pan_item_select(obj, sd->cur_item);
|
||||||
|
evry_conf->scroll_animate = tmp;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue