forked from enlightenment/enlightenment
Add multiple selections using control+click.
SVN revision: 17384
This commit is contained in:
parent
1fbaab35ba
commit
2842e54568
|
@ -92,6 +92,7 @@ images
|
||||||
image: "e17_icon_fileman_folder.png" COMP;
|
image: "e17_icon_fileman_folder.png" COMP;
|
||||||
image: "e17_icon_fileman_folder_clicked.png" COMP;
|
image: "e17_icon_fileman_folder_clicked.png" COMP;
|
||||||
image: "e17_icon_fileman_file.png" COMP;
|
image: "e17_icon_fileman_file.png" COMP;
|
||||||
|
image: "e17_icon_fileman_file_clicked.png" COMP;
|
||||||
image: "e17_icon_fileman_pdf.png" COMP;
|
image: "e17_icon_fileman_pdf.png" COMP;
|
||||||
image: "e17_icon_fileman_c.png" COMP;
|
image: "e17_icon_fileman_c.png" COMP;
|
||||||
image: "e17_icon_fileman_h.png" COMP;
|
image: "e17_icon_fileman_h.png" COMP;
|
||||||
|
@ -523,7 +524,7 @@ group {
|
||||||
|
|
||||||
|
|
||||||
FILEMAN_ICON_CLICKABLE("folder");
|
FILEMAN_ICON_CLICKABLE("folder");
|
||||||
FILEMAN_ICON("file");
|
FILEMAN_ICON_CLICKABLE("file");
|
||||||
FILEMAN_ICON("pdf");
|
FILEMAN_ICON("pdf");
|
||||||
FILEMAN_ICON("c");
|
FILEMAN_ICON("c");
|
||||||
FILEMAN_ICON("h");
|
FILEMAN_ICON("h");
|
||||||
|
|
Binary file not shown.
|
@ -8,6 +8,8 @@
|
||||||
#include <grp.h>
|
#include <grp.h>
|
||||||
|
|
||||||
/* TODO:
|
/* TODO:
|
||||||
|
* - checking wether events belong to us (ecore events)
|
||||||
|
*
|
||||||
* - scrolling
|
* - scrolling
|
||||||
*
|
*
|
||||||
* - we need a redraw function that will just re-arrange and not do
|
* - we need a redraw function that will just re-arrange and not do
|
||||||
|
@ -178,6 +180,9 @@ static void _e_fm_redraw_new (E_Fileman_Smart_Data *sd);
|
||||||
static void _e_fm_redraw_update (E_Fileman_Smart_Data *sd);
|
static void _e_fm_redraw_update (E_Fileman_Smart_Data *sd);
|
||||||
static void _e_fm_size_calc (E_Fileman_Smart_Data *sd);
|
static void _e_fm_size_calc (E_Fileman_Smart_Data *sd);
|
||||||
static void _e_fm_redraw (E_Fileman_Smart_Data *sd);
|
static void _e_fm_redraw (E_Fileman_Smart_Data *sd);
|
||||||
|
static void _e_fm_selections_clear(E_Fileman_Smart_Data *sd);
|
||||||
|
static void _e_fm_selections_add(E_Fileman_File *file);
|
||||||
|
static void _e_fm_selections_del(E_Fileman_File *file);
|
||||||
static void _e_fm_files_free (E_Fileman_Smart_Data *sd);
|
static void _e_fm_files_free (E_Fileman_Smart_Data *sd);
|
||||||
static char *_e_fm_file_stripext(char *path);
|
static char *_e_fm_file_stripext(char *path);
|
||||||
static Evas_Bool _e_fm_file_can_preview (E_Fileman_File *file);
|
static Evas_Bool _e_fm_file_can_preview (E_Fileman_File *file);
|
||||||
|
@ -592,7 +597,7 @@ _e_fm_smart_add(Evas_Object *object)
|
||||||
sd->event_handlers = evas_list_append (sd->event_handlers,
|
sd->event_handlers = evas_list_append (sd->event_handlers,
|
||||||
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE,
|
ecore_event_handler_add(ECORE_X_EVENT_MOUSE_MOVE,
|
||||||
_e_fm_mouse_move_cb,
|
_e_fm_mouse_move_cb,
|
||||||
sd));
|
sd));
|
||||||
evas_object_smart_data_set(object, sd);
|
evas_object_smart_data_set(object, sd);
|
||||||
|
|
||||||
dir = get_current_dir_name();
|
dir = get_current_dir_name();
|
||||||
|
@ -1008,6 +1013,58 @@ _e_fm_redraw (E_Fileman_Smart_Data *sd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_fm_selections_clear(E_Fileman_Smart_Data *sd)
|
||||||
|
{
|
||||||
|
Evas_List *l;
|
||||||
|
|
||||||
|
for (l = sd->selection.files; l; l = l->next)
|
||||||
|
{
|
||||||
|
E_Fileman_File *file;
|
||||||
|
|
||||||
|
file = l->data;
|
||||||
|
if(!file) continue;
|
||||||
|
edje_object_signal_emit(file->icon, "unclicked", "");
|
||||||
|
edje_object_signal_emit(file->icon_img, "unclicked", "");
|
||||||
|
file->state.clicked = 0;
|
||||||
|
file->state.selected = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
sd->selection.files = evas_list_free(sd->selection.files);
|
||||||
|
|
||||||
|
if(sd->selection.current_file)
|
||||||
|
{
|
||||||
|
sd->selection.files = NULL;
|
||||||
|
sd->selection.current_file = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_fm_selections_add(E_Fileman_File *file)
|
||||||
|
{
|
||||||
|
if(!file)
|
||||||
|
return;
|
||||||
|
|
||||||
|
edje_object_signal_emit(file->icon, "clicked", "");
|
||||||
|
edje_object_signal_emit(file->icon_img, "clicked", "");
|
||||||
|
file->sd->selection.current_file = file;
|
||||||
|
file->state.clicked = 1;
|
||||||
|
file->sd->selection.files = evas_list_append(file->sd->selection.files, file);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_fm_selections_del(E_Fileman_File *file)
|
||||||
|
{
|
||||||
|
if(!file)
|
||||||
|
return;
|
||||||
|
|
||||||
|
edje_object_signal_emit(file->icon, "unclicked", "");
|
||||||
|
edje_object_signal_emit(file->icon_img, "unclicked", "");
|
||||||
|
file->state.clicked = 0;
|
||||||
|
file->sd->selection.files = evas_list_remove(file->sd->selection.files, file);
|
||||||
|
file->sd->selection.current_file = evas_list_nth(file->sd->selection.files, 0);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_fm_dir_set (E_Fileman_Smart_Data *sd, const char *dir)
|
_e_fm_dir_set (E_Fileman_Smart_Data *sd, const char *dir)
|
||||||
{
|
{
|
||||||
|
@ -1025,8 +1082,7 @@ _e_fm_dir_set (E_Fileman_Smart_Data *sd, const char *dir)
|
||||||
sd->dir = calloc (/*strlen(dir) + 1*/PATH_MAX, sizeof (char));
|
sd->dir = calloc (/*strlen(dir) + 1*/PATH_MAX, sizeof (char));
|
||||||
snprintf (sd->dir, PATH_MAX/*strlen(dir) + 1*/, "%s", dir);
|
snprintf (sd->dir, PATH_MAX/*strlen(dir) + 1*/, "%s", dir);
|
||||||
|
|
||||||
if(sd->selection.current_file)
|
_e_fm_selections_clear(sd);
|
||||||
sd->selection.current_file = NULL;
|
|
||||||
|
|
||||||
_e_fm_redraw_new (sd);
|
_e_fm_redraw_new (sd);
|
||||||
}
|
}
|
||||||
|
@ -1070,8 +1126,7 @@ _e_fm_files_free (E_Fileman_Smart_Data *sd)
|
||||||
sd->files = NULL;
|
sd->files = NULL;
|
||||||
sd->drag.file = NULL;
|
sd->drag.file = NULL;
|
||||||
|
|
||||||
if(sd->selection.current_file)
|
_e_fm_selections_clear(sd);
|
||||||
sd->selection.current_file = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -1080,8 +1135,6 @@ _e_fm_dir_monitor_cb (void *data, Ecore_File_Monitor *ecore_file_monitor, Ecore
|
||||||
E_Fileman_Smart_Data *sd;
|
E_Fileman_Smart_Data *sd;
|
||||||
|
|
||||||
sd = data;
|
sd = data;
|
||||||
|
|
||||||
printf("MONITOR!!!!\n");
|
|
||||||
|
|
||||||
if (event == ECORE_FILE_EVENT_DELETED_SELF)
|
if (event == ECORE_FILE_EVENT_DELETED_SELF)
|
||||||
{
|
{
|
||||||
|
@ -1899,15 +1952,7 @@ _e_fm_mouse_down_cb (void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||||
switch(ev->button)
|
switch(ev->button)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
|
_e_fm_selections_clear(sd);
|
||||||
/* todo: multiple selections */
|
|
||||||
if(sd->selection.current_file)
|
|
||||||
{
|
|
||||||
edje_object_signal_emit(sd->selection.current_file->icon, "unclicked", "");
|
|
||||||
edje_object_signal_emit(sd->selection.current_file->icon_img, "unclicked", "");
|
|
||||||
sd->selection.current_file->state.clicked = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
|
@ -2077,24 +2122,36 @@ _e_fm_file_icon_mouse_down_cb (void *data, Evas *e, Evas_Object *obj, void *even
|
||||||
file->sd->drag.x = -1;
|
file->sd->drag.x = -1;
|
||||||
file->sd->drag.file = file;
|
file->sd->drag.file = file;
|
||||||
printf("drag file: %s\n", file->dir_entry->d_name);
|
printf("drag file: %s\n", file->dir_entry->d_name);
|
||||||
|
|
||||||
if(!file->state.clicked)
|
if(!file->state.clicked)
|
||||||
{
|
{
|
||||||
/* todo multiple selection with control or shift */
|
//Evas_Modifier_Mask mask;
|
||||||
if(file->sd->selection.current_file)
|
|
||||||
{
|
|
||||||
edje_object_signal_emit(file->sd->selection.current_file->icon, "unclicked", "");
|
|
||||||
edje_object_signal_emit(file->sd->selection.current_file->icon_img, "unclicked", "");
|
|
||||||
file->sd->selection.current_file->state.clicked = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
edje_object_signal_emit(file->icon, "clicked", "");
|
//mask = evas_key_modifier_mask_get(file->sd->evas, "Control");
|
||||||
edje_object_signal_emit(file->icon_img, "clicked", "");
|
|
||||||
file->sd->selection.current_file = file;
|
if(evas_key_modifier_is_set(evas_key_modifier_get(file->sd->evas), "Control"))
|
||||||
file->state.clicked = 1;
|
file->sd->selection.files = evas_list_append(file->sd->selection.files,
|
||||||
|
file);
|
||||||
|
else
|
||||||
|
_e_fm_selections_clear(file->sd);
|
||||||
|
|
||||||
|
_e_fm_selections_add(file);
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
|
{
|
||||||
|
//Evas_Modifier_Mask mask;
|
||||||
|
|
||||||
|
//mask = evas_key_modifier_mask_get(file->sd->evas, "Control");
|
||||||
|
|
||||||
|
if(evas_key_modifier_is_set(evas_key_modifier_get(file->sd->evas), "Control"))
|
||||||
|
_e_fm_selections_del(file);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_e_fm_selections_clear(file->sd);
|
||||||
|
_e_fm_selections_add(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (ev->button == 3) {
|
else if (ev->button == 3) {
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue