Hello, All.
This is patch for in-place files renaming in efm2.
I was guided by next reasons:
- leave usual rename dialog, where it is more convenient;
- using theme for entry field (all entries looks the same);
For theme elements:
e/fileman/default/icon/variable,
e/fileman/default/icon/fixed,
e/fileman/default/list/variable,
e/fileman/default/list_odd/variable,
e/fileman/default/list/fixed,
e/fileman/default/list_odd/fixed,
I have added entry pbject placement named "e.swallow.entry".
It could be any entry or editing widget, I'm using e_widget_entry.
In e_fm.c I have added handlers for entry object:
_e_fm2_icon_entry_widget_add - create and focus entry field;
_e_fm2_icon_entry_widget_del - destroy entry field and return focus to efm2
window;
_e_fm2_icon_entry_widget_cb_key_down - key down handler for entry widget;
_e_fm2_icon_entry_widget_accept - do file rename and destroy entry widget;
Also in mouse and keyboard handlers of efm2 window I have added conditions to
prevent
double event processing (with entry and then rest objects of window).
Renaming accepted when enter key pressed or other icon selected or icon
deselected.
Renaming cancelling when escape key pressed or efm2 window closed.
Only one renaming allowed in efm2 window.
data/themes/default.edc | 42 ++++++++++++
src/bin/e_fm.c | 161 +++++++++++++++++++++++++++++++++++++-----------
2 files changed, 169 insertions(+), 34 deletions(-)
Index: e/data/themes/default.edc
===================================================================
--- e/data/themes/default.edc (revision 40283)
+++ e/data/themes/default.edc (working copy)
@@ -13427,6 +13427,13 @@
image.normal: "icon_efm_dnd_move.png";
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
@@ -13840,6 +13847,13 @@
image.normal: "icon_efm_dnd_move.png";
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
@@ -15082,6 +15096,13 @@
color: 0 0 0 0;
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
@@ -15547,6 +15568,13 @@
color: 0 0 0 0;
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
@@ -16014,6 +16042,13 @@
color: 0 0 0 0;
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
@@ -16480,6 +16515,13 @@
color: 0 0 0 0;
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
Index: e/src/bin/e_fm.c
===================================================================
--- e/src/bin/e_fm.c (revision 40283)
+++ e/src/bin/e_fm.c (working copy)
@@ -127,6 +127,8 @@
int ox, oy;
int x, y, w, h;
} selrect;
+
+ E_Fm2_Icon *iop_icon;
};
struct _E_Fm2_Region
@@ -147,6 +149,7 @@
int saved_rel;
E_Menu *menu;
E_Entry_Dialog *entry_dialog;
+ Evas_Object *entry_widget;
E_Config_Dialog *prop_dialog;
E_Dialog *dialog;
@@ -324,7 +327,13 @@
static void _e_fm2_file_rename_no_cb(void *data);
static void _e_fm2_file_properties(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_fm2_file_properties_delete_cb(void *obj);
+static void _e_fm2_file_do_rename(const char *text, E_Fm2_Icon *ic);
+static Evas_Object* _e_fm2_icon_entry_widget_add(E_Fm2_Icon *ic);
+static void _e_fm2_icon_entry_widget_del(E_Fm2_Icon *ic);
+static void _e_fm2_icon_entry_widget_cb_key_down(void *data, Evas *e,
Evas_Object *obj, void *event_info);
+static void _e_fm2_icon_entry_widget_accept(E_Fm2_Icon *ic);
+
static void _e_fm_retry_abort_dialog(int pid, const char *str);
static void _e_fm_retry_abort_delete_cb(void *obj);
static void _e_fm_retry_abort_retry_cb(void *data, E_Dialog *dialog);
@@ -4453,6 +4462,8 @@
e_object_del(E_OBJECT(ic->entry_dialog));
ic->entry_dialog = NULL;
}
+ if (ic->entry_widget)
+ _e_fm2_icon_entry_widget_del(ic);
if (ic->prop_dialog)
{
e_object_del(E_OBJECT(ic->prop_dialog));
@@ -4669,6 +4680,9 @@
{
const char *selectraise;
+ if(ic->sd->iop_icon)
+ _e_fm2_icon_entry_widget_accept(ic->sd->iop_icon);
+
edje_object_signal_emit(ic->obj, "e,state,selected", "e");
edje_object_signal_emit(ic->obj_icon, "e,state,selected", "e");
evas_object_stack_below(ic->obj, ic->sd->drop);
@@ -4688,6 +4702,9 @@
{
const char *stacking, *selectraise;
+ if(ic->entry_widget)
+ _e_fm2_icon_entry_widget_accept(ic);
+
edje_object_signal_emit(ic->obj, "e,state,unselected", "e");
edje_object_signal_emit(ic->obj_icon, "e,state,unselected", "e");
stacking = edje_object_data_get(ic->obj, "stacking");
@@ -6297,6 +6314,10 @@
ic = data;
ev = event_info;
+
+ if (ic->entry_widget)
+ return;
+
if ((ev->button == 1) && (ev->flags & EVAS_BUTTON_DOUBLE_CLICK))
{
/* if its a directory && open dirs in-place is set then change the dir
@@ -6340,6 +6361,9 @@
ic = data;
ev = event_info;
+ if (ic->entry_widget)
+ return;
+
if ((ev->button == 1) && (!ic->drag.dnd))
{
if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD))
@@ -6449,6 +6473,10 @@
ic = data;
ev = event_info;
+
+ if (ic->entry_widget)
+ return;
+
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
if ((ic->drag.start) && (ic->sd->eobj))
{
@@ -6656,6 +6684,9 @@
sd = data;
ev = event_info;
+ if(sd->iop_icon)
+ return;
+
if (evas_key_modifier_is_set(ev->modifiers, "Control"))
{
if (!strcmp(ev->key, "x"))
@@ -8370,30 +8401,84 @@
_e_fm2_file_rename(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Fm2_Icon *ic;
- E_Manager *man;
- E_Container *con;
char text[PATH_MAX + 256];
ic = data;
- if (ic->entry_dialog) return;
+ if (ic->entry_dialog || ic->entry_widget) return;
- man = e_manager_current_get();
- if (!man) return;
- con = e_container_current_get(man);
- if (!con) return;
+ if (!_e_fm2_icon_entry_widget_add(ic))
+ {
+ snprintf(text, PATH_MAX + 256,
+ _("Rename %s to:"),
+ ic->info.file);
+ ic->entry_dialog = e_entry_dialog_show(_("Rename File"), "edit-rename",
+ text, ic->info.file, NULL, NULL,
+ _e_fm2_file_rename_yes_cb,
+ _e_fm2_file_rename_no_cb, ic);
+ E_OBJECT(ic->entry_dialog)->data = ic;
+ e_object_del_attach_func_set(E_OBJECT(ic->entry_dialog),
_e_fm2_file_rename_delete_cb);
+ }
+}
- snprintf(text, PATH_MAX + 256,
- _("Rename %s to:"),
- ic->info.file);
- ic->entry_dialog = e_entry_dialog_show(_("Rename File"), "edit-rename",
- text, ic->info.file, NULL, NULL,
- _e_fm2_file_rename_yes_cb,
- _e_fm2_file_rename_no_cb, ic);
- E_OBJECT(ic->entry_dialog)->data = ic;
- e_object_del_attach_func_set(E_OBJECT(ic->entry_dialog),
_e_fm2_file_rename_delete_cb);
+static Evas_Object*
+_e_fm2_icon_entry_widget_add(E_Fm2_Icon *ic)
+{
+ Evas_Object *eo;
+
+ if (ic->sd->iop_icon)
+ _e_fm2_icon_entry_widget_accept(ic->sd->iop_icon);
+
+ if (!edje_object_part_exists(ic->obj, "e.swallow.entry"))
+ return NULL;
+
+ ic->entry_widget = e_widget_entry_add(evas_object_evas_get(ic->obj),
+ NULL, NULL, NULL, NULL);
+ evas_object_event_callback_add(ic->entry_widget, EVAS_CALLBACK_KEY_DOWN,
+ _e_fm2_icon_entry_widget_cb_key_down, ic);
+ edje_object_part_swallow(ic->obj, "e.swallow.entry", ic->entry_widget);
+ evas_object_show(ic->entry_widget);
+ e_widget_entry_text_set(ic->entry_widget, ic->info.file);
+ e_widget_focus_set(ic->entry_widget, 0);
+ eo = e_widget_entry_editable_object_get(ic->entry_widget);
+ e_editable_cursor_move_to_start(eo);
+ e_editable_selection_move_to_end(eo);
+ ic->sd->iop_icon = ic;
+
+ return ic->entry_widget;
}
static void
+_e_fm2_icon_entry_widget_del(E_Fm2_Icon *ic)
+{
+ ic->sd->iop_icon = NULL;
+ evas_object_focus_set(ic->sd->obj, 1);
+ evas_object_del(ic->entry_widget);
+ ic->entry_widget = NULL;
+}
+
+static void
+_e_fm2_icon_entry_widget_cb_key_down(void *data, Evas *e, Evas_Object *obj,
void *event_info)
+{
+ Evas_Event_Key_Down *ev;
+ E_Fm2_Icon *ic;
+
+ ev = event_info;
+ ic = data;
+
+ if (!strcmp(ev->key, "Escape"))
+ _e_fm2_icon_entry_widget_del(ic);
+ else if (!strcmp(ev->key, "Return"))
+ _e_fm2_icon_entry_widget_accept(ic);
+}
+
+static void
+_e_fm2_icon_entry_widget_accept(E_Fm2_Icon *ic)
+{
+ _e_fm2_file_do_rename(e_widget_entry_text_get(ic->entry_widget), ic);
+ _e_fm2_icon_entry_widget_del(ic);
+}
+
+static void
_e_fm2_file_rename_delete_cb(void *obj)
{
E_Fm2_Icon *ic;
@@ -8406,27 +8491,11 @@
_e_fm2_file_rename_yes_cb(char *text, void *data)
{
E_Fm2_Icon *ic;
- char oldpath[PATH_MAX];
- char newpath[PATH_MAX];
- char *args = NULL;
- size_t size = 0;
- size_t length = 0;
ic = data;
ic->entry_dialog = NULL;
- if ((text) && (strcmp(text, ic->info.file)))
- {
- _e_fm2_icon_realpath(ic, oldpath, sizeof(oldpath));
- snprintf(newpath, sizeof(newpath), "%s/%s", ic->sd->realpath, text);
- if (e_filereg_file_protected(oldpath)) return;
- args = _e_fm_string_append_quoted(args, &size, &length, oldpath);
- args = _e_fm_string_append_char(args, &size, &length, ' ');
- args = _e_fm_string_append_quoted(args, &size, &length, newpath);
-
- _e_fm_client_file_move(args, ic->sd->obj);
- free(args);
- }
+ _e_fm2_file_do_rename(text, ic);
}
static void
@@ -8438,6 +8507,30 @@
ic->entry_dialog = NULL;
}
+static void
+_e_fm2_file_do_rename(const char *text, E_Fm2_Icon *ic)
+{
+ char oldpath[PATH_MAX];
+ char newpath[PATH_MAX];
+ char *args = NULL;
+ size_t size = 0;
+ size_t length = 0;
+
+ if ((text) && (strcmp(text, ic->info.file)))
+ {
+ _e_fm2_icon_realpath(ic, oldpath, sizeof(oldpath));
+ snprintf(newpath, sizeof(newpath), "%s/%s", ic->sd->realpath, text);
+ if (e_filereg_file_protected(oldpath)) return;
+
+ args = _e_fm_string_append_quoted(args, &size, &length, oldpath);
+ args = _e_fm_string_append_char(args, &size, &length, ' ');
+ args = _e_fm_string_append_quoted(args, &size, &length, newpath);
+
+ _e_fm_client_file_move(args, ic->sd->obj);
+ free(args);
+ }
+}
+
static void _e_fm_retry_abort_dialog(int pid, const char *str)
{
E_Manager *man;
@@ -8662,7 +8755,7 @@
E_Container *con;
ic = data;
- if (ic->entry_dialog) return;
+ if (ic->entry_dialog || ic->entry_widget) return;
man = e_manager_current_get();
if (!man) return;
Sincerely yours, Sergey.
--
Jabber/XMPP: sergey.semer...@gmail.com
Cellular: +7-909-206-5992
Index: e/data/themes/default.edc
===================================================================
--- e/data/themes/default.edc (revision 40283)
+++ e/data/themes/default.edc (working copy)
@@ -13427,6 +13427,13 @@
image.normal: "icon_efm_dnd_move.png";
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
@@ -13840,6 +13847,13 @@
image.normal: "icon_efm_dnd_move.png";
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
@@ -15082,6 +15096,13 @@
color: 0 0 0 0;
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
@@ -15547,6 +15568,13 @@
color: 0 0 0 0;
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
@@ -16014,6 +16042,13 @@
color: 0 0 0 0;
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
@@ -16480,6 +16515,13 @@
color: 0 0 0 0;
}
}
+ part { name: "e.swallow.entry";
+ type: SWALLOW;
+ description { state: "default" 0.0;
+ rel1.to: "e.text.label";
+ rel2.to: "e.text.label";
+ }
+ }
}
programs {
program { name: "go_active";
Index: e/src/bin/e_fm.c
===================================================================
--- e/src/bin/e_fm.c (revision 40283)
+++ e/src/bin/e_fm.c (working copy)
@@ -127,6 +127,8 @@
int ox, oy;
int x, y, w, h;
} selrect;
+
+ E_Fm2_Icon *iop_icon;
};
struct _E_Fm2_Region
@@ -147,6 +149,7 @@
int saved_rel;
E_Menu *menu;
E_Entry_Dialog *entry_dialog;
+ Evas_Object *entry_widget;
E_Config_Dialog *prop_dialog;
E_Dialog *dialog;
@@ -324,7 +327,13 @@
static void _e_fm2_file_rename_no_cb(void *data);
static void _e_fm2_file_properties(void *data, E_Menu *m, E_Menu_Item *mi);
static void _e_fm2_file_properties_delete_cb(void *obj);
+static void _e_fm2_file_do_rename(const char *text, E_Fm2_Icon *ic);
+static Evas_Object* _e_fm2_icon_entry_widget_add(E_Fm2_Icon *ic);
+static void _e_fm2_icon_entry_widget_del(E_Fm2_Icon *ic);
+static void _e_fm2_icon_entry_widget_cb_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _e_fm2_icon_entry_widget_accept(E_Fm2_Icon *ic);
+
static void _e_fm_retry_abort_dialog(int pid, const char *str);
static void _e_fm_retry_abort_delete_cb(void *obj);
static void _e_fm_retry_abort_retry_cb(void *data, E_Dialog *dialog);
@@ -4453,6 +4462,8 @@
e_object_del(E_OBJECT(ic->entry_dialog));
ic->entry_dialog = NULL;
}
+ if (ic->entry_widget)
+ _e_fm2_icon_entry_widget_del(ic);
if (ic->prop_dialog)
{
e_object_del(E_OBJECT(ic->prop_dialog));
@@ -4669,6 +4680,9 @@
{
const char *selectraise;
+ if(ic->sd->iop_icon)
+ _e_fm2_icon_entry_widget_accept(ic->sd->iop_icon);
+
edje_object_signal_emit(ic->obj, "e,state,selected", "e");
edje_object_signal_emit(ic->obj_icon, "e,state,selected", "e");
evas_object_stack_below(ic->obj, ic->sd->drop);
@@ -4688,6 +4702,9 @@
{
const char *stacking, *selectraise;
+ if(ic->entry_widget)
+ _e_fm2_icon_entry_widget_accept(ic);
+
edje_object_signal_emit(ic->obj, "e,state,unselected", "e");
edje_object_signal_emit(ic->obj_icon, "e,state,unselected", "e");
stacking = edje_object_data_get(ic->obj, "stacking");
@@ -6297,6 +6314,10 @@
ic = data;
ev = event_info;
+
+ if (ic->entry_widget)
+ return;
+
if ((ev->button == 1) && (ev->flags & EVAS_BUTTON_DOUBLE_CLICK))
{
/* if its a directory && open dirs in-place is set then change the dir
@@ -6340,6 +6361,9 @@
ic = data;
ev = event_info;
+ if (ic->entry_widget)
+ return;
+
if ((ev->button == 1) && (!ic->drag.dnd))
{
if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD))
@@ -6449,6 +6473,10 @@
ic = data;
ev = event_info;
+
+ if (ic->entry_widget)
+ return;
+
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
if ((ic->drag.start) && (ic->sd->eobj))
{
@@ -6656,6 +6684,9 @@
sd = data;
ev = event_info;
+ if(sd->iop_icon)
+ return;
+
if (evas_key_modifier_is_set(ev->modifiers, "Control"))
{
if (!strcmp(ev->key, "x"))
@@ -8370,30 +8401,84 @@
_e_fm2_file_rename(void *data, E_Menu *m, E_Menu_Item *mi)
{
E_Fm2_Icon *ic;
- E_Manager *man;
- E_Container *con;
char text[PATH_MAX + 256];
ic = data;
- if (ic->entry_dialog) return;
+ if (ic->entry_dialog || ic->entry_widget) return;
- man = e_manager_current_get();
- if (!man) return;
- con = e_container_current_get(man);
- if (!con) return;
+ if (!_e_fm2_icon_entry_widget_add(ic))
+ {
+ snprintf(text, PATH_MAX + 256,
+ _("Rename %s to:"),
+ ic->info.file);
+ ic->entry_dialog = e_entry_dialog_show(_("Rename File"), "edit-rename",
+ text, ic->info.file, NULL, NULL,
+ _e_fm2_file_rename_yes_cb,
+ _e_fm2_file_rename_no_cb, ic);
+ E_OBJECT(ic->entry_dialog)->data = ic;
+ e_object_del_attach_func_set(E_OBJECT(ic->entry_dialog), _e_fm2_file_rename_delete_cb);
+ }
+}
- snprintf(text, PATH_MAX + 256,
- _("Rename %s to:"),
- ic->info.file);
- ic->entry_dialog = e_entry_dialog_show(_("Rename File"), "edit-rename",
- text, ic->info.file, NULL, NULL,
- _e_fm2_file_rename_yes_cb,
- _e_fm2_file_rename_no_cb, ic);
- E_OBJECT(ic->entry_dialog)->data = ic;
- e_object_del_attach_func_set(E_OBJECT(ic->entry_dialog), _e_fm2_file_rename_delete_cb);
+static Evas_Object*
+_e_fm2_icon_entry_widget_add(E_Fm2_Icon *ic)
+{
+ Evas_Object *eo;
+
+ if (ic->sd->iop_icon)
+ _e_fm2_icon_entry_widget_accept(ic->sd->iop_icon);
+
+ if (!edje_object_part_exists(ic->obj, "e.swallow.entry"))
+ return NULL;
+
+ ic->entry_widget = e_widget_entry_add(evas_object_evas_get(ic->obj),
+ NULL, NULL, NULL, NULL);
+ evas_object_event_callback_add(ic->entry_widget, EVAS_CALLBACK_KEY_DOWN,
+ _e_fm2_icon_entry_widget_cb_key_down, ic);
+ edje_object_part_swallow(ic->obj, "e.swallow.entry", ic->entry_widget);
+ evas_object_show(ic->entry_widget);
+ e_widget_entry_text_set(ic->entry_widget, ic->info.file);
+ e_widget_focus_set(ic->entry_widget, 0);
+ eo = e_widget_entry_editable_object_get(ic->entry_widget);
+ e_editable_cursor_move_to_start(eo);
+ e_editable_selection_move_to_end(eo);
+ ic->sd->iop_icon = ic;
+
+ return ic->entry_widget;
}
static void
+_e_fm2_icon_entry_widget_del(E_Fm2_Icon *ic)
+{
+ ic->sd->iop_icon = NULL;
+ evas_object_focus_set(ic->sd->obj, 1);
+ evas_object_del(ic->entry_widget);
+ ic->entry_widget = NULL;
+}
+
+static void
+_e_fm2_icon_entry_widget_cb_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ Evas_Event_Key_Down *ev;
+ E_Fm2_Icon *ic;
+
+ ev = event_info;
+ ic = data;
+
+ if (!strcmp(ev->key, "Escape"))
+ _e_fm2_icon_entry_widget_del(ic);
+ else if (!strcmp(ev->key, "Return"))
+ _e_fm2_icon_entry_widget_accept(ic);
+}
+
+static void
+_e_fm2_icon_entry_widget_accept(E_Fm2_Icon *ic)
+{
+ _e_fm2_file_do_rename(e_widget_entry_text_get(ic->entry_widget), ic);
+ _e_fm2_icon_entry_widget_del(ic);
+}
+
+static void
_e_fm2_file_rename_delete_cb(void *obj)
{
E_Fm2_Icon *ic;
@@ -8406,27 +8491,11 @@
_e_fm2_file_rename_yes_cb(char *text, void *data)
{
E_Fm2_Icon *ic;
- char oldpath[PATH_MAX];
- char newpath[PATH_MAX];
- char *args = NULL;
- size_t size = 0;
- size_t length = 0;
ic = data;
ic->entry_dialog = NULL;
- if ((text) && (strcmp(text, ic->info.file)))
- {
- _e_fm2_icon_realpath(ic, oldpath, sizeof(oldpath));
- snprintf(newpath, sizeof(newpath), "%s/%s", ic->sd->realpath, text);
- if (e_filereg_file_protected(oldpath)) return;
- args = _e_fm_string_append_quoted(args, &size, &length, oldpath);
- args = _e_fm_string_append_char(args, &size, &length, ' ');
- args = _e_fm_string_append_quoted(args, &size, &length, newpath);
-
- _e_fm_client_file_move(args, ic->sd->obj);
- free(args);
- }
+ _e_fm2_file_do_rename(text, ic);
}
static void
@@ -8438,6 +8507,30 @@
ic->entry_dialog = NULL;
}
+static void
+_e_fm2_file_do_rename(const char *text, E_Fm2_Icon *ic)
+{
+ char oldpath[PATH_MAX];
+ char newpath[PATH_MAX];
+ char *args = NULL;
+ size_t size = 0;
+ size_t length = 0;
+
+ if ((text) && (strcmp(text, ic->info.file)))
+ {
+ _e_fm2_icon_realpath(ic, oldpath, sizeof(oldpath));
+ snprintf(newpath, sizeof(newpath), "%s/%s", ic->sd->realpath, text);
+ if (e_filereg_file_protected(oldpath)) return;
+
+ args = _e_fm_string_append_quoted(args, &size, &length, oldpath);
+ args = _e_fm_string_append_char(args, &size, &length, ' ');
+ args = _e_fm_string_append_quoted(args, &size, &length, newpath);
+
+ _e_fm_client_file_move(args, ic->sd->obj);
+ free(args);
+ }
+}
+
static void _e_fm_retry_abort_dialog(int pid, const char *str)
{
E_Manager *man;
@@ -8662,7 +8755,7 @@
E_Container *con;
ic = data;
- if (ic->entry_dialog) return;
+ if (ic->entry_dialog || ic->entry_widget) return;
man = e_manager_current_get();
if (!man) return;
------------------------------------------------------------------------------
Stay on top of everything new and different, both inside and
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today.
Use priority code J9JMT32. http://p.sf.net/sfu/p
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel