miniview: (shift/ctrl/alt)PgUp/Down to scroll

This commit is contained in:
Boris Faure 2014-05-13 23:09:29 +02:00
parent 46a85b4962
commit 2f851eb9a0
3 changed files with 46 additions and 1 deletions

View File

@ -151,6 +151,47 @@ _smart_cb_mouse_wheel(void *data, Evas *e EINA_UNUSED,
mv->to_render = 1; mv->to_render = 1;
} }
Eina_Bool
miniview_handle_key(Evas_Object *obj, Evas_Event_Key_Down *ev)
{
Miniview *mv;
Evas_Coord ox, oy, ow, oh, mx, my;
int z = 25;
EINA_SAFETY_ON_NULL_RETURN_VAL(obj, EINA_FALSE);
mv = evas_object_smart_data_get(obj);
if (!mv || !mv->is_shown)
return EINA_FALSE;
evas_object_geometry_get(mv->img, &ox, &oy, &ow, &oh);
evas_pointer_canvas_xy_get(evas_object_evas_get(mv->base), &mx, &my);
if ((mx < ox) || (mx > ox + ow) ||
(my < oy) || (my > oy + oh))
return EINA_FALSE;
if (evas_key_modifier_is_set(ev->modifiers, "Alt") ||
evas_key_modifier_is_set(ev->modifiers, "Shift") ||
evas_key_modifier_is_set(ev->modifiers, "Control"))
z = mv->img_h;
if (!strcmp(ev->key, "Prior"))
{
mv->img_hist -= z;
mv->to_render = 1;
return EINA_TRUE;
}
else if (!strcmp(ev->key, "Next"))
{
mv->img_hist += z;
mv->to_render = 1;
return EINA_TRUE;
}
return EINA_FALSE;
}
static void static void
_smart_cb_mouse_down(void *data, Evas *e EINA_UNUSED, _smart_cb_mouse_down(void *data, Evas *e EINA_UNUSED,
Evas_Object *obj EINA_UNUSED, void *event) Evas_Object *obj EINA_UNUSED, void *event)

View File

@ -6,7 +6,7 @@
Evas_Object * miniview_add(Evas_Object *parent, Evas_Object *termio); Evas_Object * miniview_add(Evas_Object *parent, Evas_Object *termio);
void miniview_redraw(Evas_Object *obj); void miniview_redraw(Evas_Object *obj);
void miniview_push_history(Evas_Object *obj, Termcell *cells, int cells_len); Eina_Bool miniview_handle_key(Evas_Object *obj, Evas_Event_Key_Down *ev);
void miniview_init(void); void miniview_init(void);
void miniview_shutdown(void); void miniview_shutdown(void);

View File

@ -2084,6 +2084,10 @@ _smart_cb_key_down(void *data, Evas *e EINA_UNUSED,
EINA_SAFETY_ON_NULL_RETURN(sd); EINA_SAFETY_ON_NULL_RETURN(sd);
EINA_SAFETY_ON_NULL_RETURN(ev->key); EINA_SAFETY_ON_NULL_RETURN(ev->key);
if (miniview_handle_key(term_miniview_get(sd->term), ev))
return;
if ((!alt) && (ctrl) && (!shift)) if ((!alt) && (ctrl) && (!shift))
{ {
if (!strcmp(ev->key, "Prior")) if (!strcmp(ev->key, "Prior"))