From e33ba2d5f044e58f6f82339efeae33b1324348f3 Mon Sep 17 00:00:00 2001 From: Viktor Kojouharov Date: Wed, 1 Apr 2009 08:28:21 +0000 Subject: [PATCH] ctrl+n duplicates the current fwin SVN revision: 39826 --- src/bin/e_fm.c | 5 +++-- src/modules/fileman/e_fwin.c | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/bin/e_fm.c b/src/bin/e_fm.c index 88a98fd6e..6926b8db8 100644 --- a/src/bin/e_fm.c +++ b/src/bin/e_fm.c @@ -1974,7 +1974,7 @@ _e_fm2_icon_mime_fdo_get(Evas *evas, const E_Fm2_Icon *ic, const char **type_ret { Evas_Object *o; o = _e_fm2_icon_explicit_get(evas, ic, icon, type_ret); - free(icon); + free((char *) icon); return o; } return NULL; @@ -6792,7 +6792,8 @@ _e_fm2_cb_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info) else _e_fm2_file_delete(obj); } - else + else if (!evas_key_modifier_is_set(ev->modifiers, "Control") && + !evas_key_modifier_is_set(ev->modifiers, "Alt")) { if (ev->string) { diff --git a/src/modules/fileman/e_fwin.c b/src/modules/fileman/e_fwin.c index bfab60bd0..2519fb326 100644 --- a/src/modules/fileman/e_fwin.c +++ b/src/modules/fileman/e_fwin.c @@ -82,6 +82,7 @@ static void _e_fwin_selected(void *data, Evas_Object *obj, void *event_info); static void _e_fwin_selection_change(void *data, Evas_Object *obj, void *event_info); static void _e_fwin_menu_extend(void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info); static void _e_fwin_parent(void *data, E_Menu *m, E_Menu_Item *mi); +static void _e_fwin_cb_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _e_fwin_cb_menu_extend_start(void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info); static void _e_fwin_cb_menu_open(void *data, E_Menu *m, E_Menu_Item *mi); static void _e_fwin_cb_menu_open_with(void *data, E_Menu *m, E_Menu_Item *mi); @@ -461,6 +462,7 @@ _e_fwin_new(E_Container *con, const char *dev, const char *path) fwin->fm_obj = o; _e_fwin_config_set(fwin); e_fm2_view_flags_set(o, E_FM2_VIEW_DIR_CUSTOM); + evas_object_event_callback_add(o, EVAS_CALLBACK_KEY_DOWN, _e_fwin_cb_key_down, fwin); evas_object_smart_callback_add(o, "dir_changed", _e_fwin_changed, fwin); @@ -818,6 +820,29 @@ _e_fwin_parent(void *data, E_Menu *m, E_Menu_Item *mi) e_fm2_parent_go(data); } +static void +_e_fwin_cb_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + Evas_Event_Key_Down *ev; + E_Fwin *fwin; + + fwin = data; + ev = event_info; + + if (evas_key_modifier_is_set(ev->modifiers, "Control")) + { + if (!strcmp(ev->key, "n")) + { + E_Container *con; + const char *dev, *path; + + con = e_container_current_get(e_manager_current_get()); + e_fm2_path_get(fwin->fm_obj, &dev, &path); + e_fwin_new(con, dev, path); + return; + } + } +} static void _e_fwin_cb_menu_extend_start(void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info) {