Dragging icon from border to pager now works! But since the menu

doesn't work when dragging is enabled, dragging is disabled.
For those who want dragging just remove the #if


SVN revision: 14363
This commit is contained in:
sebastid 2005-04-25 20:56:52 +00:00 committed by sebastid
parent 1ea24de1b8
commit bfb6d91905
5 changed files with 153 additions and 104 deletions

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2005-04-25 00:34+0200\n"
"POT-Creation-Date: 2005-04-25 21:25+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -122,7 +122,7 @@ msgstr ""
msgid "About..."
msgstr ""
#: src/bin/e_main.c:381
#: src/bin/e_main.c:389
msgid "Artificially slowing startup so you can see it all."
msgstr ""
@ -158,6 +158,10 @@ msgstr ""
msgid "CPU Frequency Controller Module"
msgstr ""
#: src/modules/cpufreq/e_mod_main.c:270 src/modules/cpufreq/e_mod_main.c:287
msgid "CPU Frequency ERROR"
msgstr ""
#: src/bin/e_gadman.c:512
msgid "Center Horizontally"
msgstr ""
@ -219,14 +223,10 @@ msgstr ""
msgid "Clock"
msgstr ""
#: src/bin/e_border.c:3483
#: src/bin/e_border.c:3498
msgid "Close"
msgstr ""
#: src/modules/dropshadow/e_mod_main.c:364
msgid "Near"
msgstr ""
#: src/bin/e_module.c:395
msgid "Configuration"
msgstr ""
@ -235,7 +235,7 @@ msgstr ""
msgid "CpuFreq"
msgstr ""
#: src/bin/e_border.c:3577
#: src/bin/e_border.c:3592
msgid "Create Icon"
msgstr ""
@ -255,14 +255,13 @@ msgstr ""
msgid "Dropshadow"
msgstr ""
#: src/bin/e_border.c:3551
#: src/bin/e_border.c:3566
msgid "Edit Icon"
msgstr ""
#: src/bin/e_int_menus.c:522 src/modules/clock/e_mod_main.c:309
#: src/modules/temperature/e_mod_main.c:721
#: src/modules/battery/e_mod_main.c:561
#: src/modules/pager/e_mod_main.c:420
#: src/modules/ibar/e_mod_main.c:554 src/modules/battery/e_mod_main.c:561
#: src/modules/temperature/e_mod_main.c:721 src/modules/pager/e_mod_main.c:420
#: src/modules/cpufreq/e_mod_main.c:814
msgid "Edit Mode"
msgstr ""
@ -275,7 +274,7 @@ msgstr ""
msgid "End Edit Mode"
msgstr ""
#: src/bin/e_main.c:365
#: src/bin/e_main.c:373
msgid "Enlightenment"
msgstr ""
@ -295,7 +294,7 @@ msgstr ""
msgid "Enlightenment IBar Module"
msgstr ""
#: src/bin/e_main.c:350
#: src/bin/e_main.c:358
msgid "Enlightenment IPC setup error!"
msgstr ""
@ -303,7 +302,7 @@ msgstr ""
msgid "Enlightenment Pager Module"
msgstr ""
#: src/bin/e_main.c:367
#: src/bin/e_main.c:375
msgid "Enlightenment Starting. Please wait."
msgstr ""
@ -379,11 +378,15 @@ msgstr ""
msgid "Enlightenment cannot set up its app system."
msgstr ""
#: src/bin/e_main.c:313
msgid "Enlightenment cannot set up its bindings system."
msgstr ""
#: src/bin/e_main.c:257
msgid "Enlightenment cannot set up its config system."
msgstr ""
#: src/bin/e_main.c:333
#: src/bin/e_main.c:341
msgid "Enlightenment cannot set up its dnd system."
msgstr ""
@ -391,7 +394,7 @@ msgstr ""
msgid "Enlightenment cannot set up its font system."
msgstr ""
#: src/bin/e_main.c:325
#: src/bin/e_main.c:333
msgid "Enlightenment cannot set up its module system."
msgstr ""
@ -405,7 +408,7 @@ msgid ""
"Perhaps you are out of memory?"
msgstr ""
#: src/bin/e_main.c:312 src/bin/e_main.c:351
#: src/bin/e_main.c:320 src/bin/e_main.c:359
msgid ""
"Enlightenment cannot set up the IPC socket.\n"
"It likely is already in use by an exisiting copy of Enlightenment.\n"
@ -510,7 +513,7 @@ msgstr ""
msgid "Error loading Module"
msgstr ""
#: src/bin/e_border.c:3651
#: src/bin/e_border.c:3666
msgid ""
"Error starting icon editor\n"
"\n"
@ -522,14 +525,14 @@ msgstr ""
msgid "Exit Enlightenment"
msgstr ""
#: src/modules/dropshadow/e_mod_main.c:382
msgid "Extremely Near"
msgstr ""
#: src/modules/ibar/e_mod_main.c:767
msgid "Extremely Large"
msgstr ""
#: src/modules/dropshadow/e_mod_main.c:382
msgid "Extremely Near"
msgstr ""
#: src/modules/battery/e_mod_main.c:927
msgid "FULL"
msgstr ""
@ -591,11 +594,11 @@ msgstr ""
msgid "IBar"
msgstr ""
#: src/bin/e_border.c:3650
#: src/bin/e_border.c:3665
msgid "Icon Edit Error"
msgstr ""
#: src/bin/e_border.c:3491
#: src/bin/e_border.c:3506
msgid "Iconify"
msgstr ""
@ -624,7 +627,7 @@ msgstr ""
msgid "Manual"
msgstr ""
#: src/bin/e_border.c:3512
#: src/bin/e_border.c:3527
msgid "Maximized"
msgstr ""
@ -632,7 +635,7 @@ msgstr ""
msgid "Maximum Speed"
msgstr ""
#: src/modules/ibar/e_mod_main.c:746 src/modules/dropshadow/e_mod_main.c:277
#: src/modules/dropshadow/e_mod_main.c:277 src/modules/ibar/e_mod_main.c:746
msgid "Medium"
msgstr ""
@ -648,10 +651,10 @@ msgstr ""
msgid "Minimum Speed"
msgstr ""
#: src/modules/clock/e_mod_main.c:40 src/modules/dropshadow/e_mod_main.c:91
#: src/modules/ibar/e_mod_main.c:105 src/modules/test/e_mod_main.c:9
#: src/modules/cpufreq/e_mod_main.c:57 src/modules/clock/e_mod_main.c:40
#: src/modules/pager/e_mod_main.c:81 src/modules/temperature/e_mod_main.c:43
#: src/modules/dropshadow/e_mod_main.c:91 src/modules/battery/e_mod_main.c:45
#: src/modules/battery/e_mod_main.c:45 src/modules/temperature/e_mod_main.c:43
#: src/modules/pager/e_mod_main.c:81 src/modules/cpufreq/e_mod_main.c:57
msgid "Module API Error"
msgstr ""
@ -671,7 +674,7 @@ msgstr ""
msgid "Modules"
msgstr ""
#: src/bin/e_main.c:383
#: src/bin/e_main.c:391
msgid "Most features do not work yet, and those that do are buggy."
msgstr ""
@ -683,6 +686,10 @@ msgstr ""
msgid "NO INFO"
msgstr ""
#: src/modules/dropshadow/e_mod_main.c:364
msgid "Near"
msgstr ""
#: src/bin/e_int_menus.c:369
msgid "New Column of Desktops"
msgstr ""
@ -735,7 +742,7 @@ msgstr ""
msgid "Restart Enlightement"
msgstr ""
#: src/bin/e_border.c:3535
#: src/bin/e_border.c:3550
msgid "Send To"
msgstr ""
@ -747,8 +754,8 @@ msgstr ""
msgid "Set Controller"
msgstr ""
#: src/modules/cpufreq/e_mod_main.c:191 src/modules/cpufreq/e_mod_main.c:478
#: src/modules/battery/e_mod_main.c:190 src/modules/battery/e_mod_main.c:469
#: src/modules/cpufreq/e_mod_main.c:191 src/modules/cpufreq/e_mod_main.c:478
msgid "Set Poll Time"
msgstr ""
@ -756,7 +763,7 @@ msgstr ""
msgid "Set Speed"
msgstr ""
#: src/bin/e_border.c:3502
#: src/bin/e_border.c:3517
msgid "Shaded"
msgstr ""
@ -780,7 +787,7 @@ msgstr ""
msgid "Something Else"
msgstr ""
#: src/bin/e_border.c:3522
#: src/bin/e_border.c:3537
msgid "Sticky"
msgstr ""
@ -800,18 +807,6 @@ msgid ""
"module search directories\n"
msgstr ""
#: src/modules/cpufreq/e_mod_main.c:270
#: src/modules/cpufreq/e_mod_main.c:288
msgid "CPU Frequency ERROR"
msgstr ""
#: src/modules/cpufreq/e_mod_main.c:271
#: src/modules/cpufreq/e_mod_main.c:279
msgid ""
"There was an error trying to set the cpu frequency\n"
"governor via the module's setfreq utility."
msgstr ""
#: src/bin/e_module.c:109 src/bin/e_module.c:131
#, c-format
msgid ""
@ -822,6 +817,18 @@ msgid ""
"%s"
msgstr ""
#: src/modules/cpufreq/e_mod_main.c:271
msgid ""
"There was an error trying to set the cpu frequency\n"
"governor via the module's setfreq utility."
msgstr ""
#: src/modules/cpufreq/e_mod_main.c:288
msgid ""
"There was an error trying to set the cpu frequency\n"
"setting via the module's setfreq utility."
msgstr ""
#: src/bin/e_int_menus.c:218
#, c-format
msgid ""
@ -833,11 +840,11 @@ msgid ""
"Please think of the aardvarks. They need some love too."
msgstr ""
#: src/bin/e_main.c:382
#: src/bin/e_main.c:390
msgid "This is development code, so be warned."
msgstr ""
#: src/bin/e_main.c:342
#: src/bin/e_main.c:350
msgid ""
"This is program has barely been started on, so it is not complete by a long\n"
"shot. Please do NOT expect anything to work properly at this stage. It's\n"
@ -872,10 +879,6 @@ msgstr ""
msgid "Tiny"
msgstr ""
#: src/modules/dropshadow/e_mod_main.c:373
msgid "Very Near"
msgstr ""
#: src/modules/dropshadow/e_mod_main.c:307
msgid "Very Dark"
msgstr ""
@ -896,6 +899,10 @@ msgstr ""
msgid "Very Light"
msgstr ""
#: src/modules/dropshadow/e_mod_main.c:373
msgid "Very Near"
msgstr ""
#: src/modules/dropshadow/e_mod_main.c:295
msgid "Very Sharp"
msgstr ""
@ -908,7 +915,7 @@ msgstr ""
msgid "Very Small"
msgstr ""
#: src/bin/e_main.c:341
#: src/bin/e_main.c:349
msgid "Welcome to Enlightenment 0.17"
msgstr ""

View File

@ -3,14 +3,6 @@
*/
#include "e.h"
typedef struct _E_Border_Fake_Mouse_Up_Info E_Border_Fake_Mouse_Up_Info;
struct _E_Border_Fake_Mouse_Up_Info
{
E_Border *border;
int button;
};
//#define INOUTDEBUG 1
#define RESIZE_NONE 0
@ -114,7 +106,7 @@ static void _e_border_move_update(E_Border *bd);
static void _e_border_reorder_after(E_Border *bd, E_Border *after);
static void _e_border_reorder_before(E_Border *bd, E_Border *before);
static void _e_border_fake_mouse_up_cb(void *data);
static void _e_border_drag_cb(void *data, void *event);
/* local subsystem globals */
static Evas_List *handlers = NULL;
@ -1960,12 +1952,9 @@ static void
_e_border_cb_signal_drag(void *data, Evas_Object *obj, const char *emission, const char *source)
{
E_Border *bd;
E_Border_Fake_Mouse_Up_Info *info;
bd = data;
#if 0
printf("drag_start %s %s\n", emission, source);
if ((bd->client.icccm.name) && (bd->client.icccm.class))
{
E_App *a;
@ -1974,17 +1963,11 @@ _e_border_cb_signal_drag(void *data, Evas_Object *obj, const char *emission, con
bd->client.icccm.class);
if (a)
{
e_drag_callback_set(bd, _e_border_drag_cb);
e_drag_start(bd->zone, "enlightenment/border", bd,
a->path, "icon");
info = E_NEW(E_Border_Fake_Mouse_Up_Info, 1);
info->border = bd;
info->button = 1;
e_object_ref(E_OBJECT(info->border));
ecore_job_add(_e_border_fake_mouse_up_cb, info);
}
}
#endif
}
static int
@ -2763,8 +2746,10 @@ _e_border_eval(E_Border *bd)
_e_border_cb_signal_resize_stop, bd);
edje_object_signal_callback_add(o, "action", "*",
_e_border_cb_signal_action, bd);
#if 0
edje_object_signal_callback_add(o, "drag", "*",
_e_border_cb_signal_drag, bd);
#endif
if (bd->focused)
edje_object_signal_emit(bd->bg_object, "active", "");
evas_object_move(o, 0, 0);
@ -3713,7 +3698,7 @@ _e_border_menu_sendto_cb(void *data, E_Menu *m, E_Menu_Item *mi)
desk = data;
bd = e_object_data_get(E_OBJECT(m));
if ((bd) && (desk))
if ((bd) && (desk) && (bd->desk != desk))
{
e_border_desk_set(bd, desk);
e_border_hide(bd, 1);
@ -4011,15 +3996,18 @@ _e_border_reorder_before(E_Border *bd, E_Border *before)
}
static void
_e_border_fake_mouse_up_cb(void *data)
_e_border_drag_cb(void *data, void *event)
{
E_Border_Fake_Mouse_Up_Info *info;
info = data;
if (info)
{
evas_event_feed_mouse_up(info->border->bg_evas, info->button, EVAS_BUTTON_NONE, NULL);
e_object_unref(E_OBJECT(info->border));
free(info);
}
E_Drag_Event *ev;
E_Border *bd;
ev = event;
bd = data;
printf("_e_border_drag_cb\n");
if (ev->drag)
evas_event_feed_mouse_move(bd->bg_evas, ev->x, ev->y, NULL);
evas_event_feed_mouse_up(bd->bg_evas, 1, EVAS_BUTTON_NONE, NULL);
}

View File

@ -13,6 +13,10 @@ static Evas_Object *drag_obj;
static char *drag_type;
static void *drag_data;
static int drag;
static void (*drag_cb)(void *data, void *event);
static void *drag_cb_data;
static int _e_dnd_cb_mouse_up(void *data, int type, void *event);
static int _e_dnd_cb_mouse_move(void *data, int type, void *event);
@ -75,7 +79,8 @@ e_dnd_shutdown(void)
}
void
e_drag_start(E_Zone *zone, const char *type, void *data, const char *icon_path, const char *icon)
e_drag_start(E_Zone *zone, const char *type, void *data,
const char *icon_path, const char *icon)
{
int w, h;
@ -86,6 +91,8 @@ e_drag_start(E_Zone *zone, const char *type, void *data, const char *icon_path,
ecore_x_pointer_confine_grab(drag_win);
ecore_x_keyboard_grab(drag_win);
drag = 0;
if (drag_ee)
{
e_canvas_del(drag_ee);
@ -120,6 +127,8 @@ e_drag_update(int x, int y)
int w, h;
if (!drag_ee) return;
drag = 1;
evas_object_geometry_get(drag_obj, NULL, NULL, &w, &h);
evas_object_show(drag_obj);
@ -132,9 +141,7 @@ void
e_drag_end(int x, int y)
{
Evas_List *l;
E_Drop_Event *e;
printf("drag_end\n");
E_Drop_Event *ev;
evas_object_del(drag_obj);
if (drag_ee)
@ -147,10 +154,11 @@ e_drag_end(int x, int y)
ecore_x_keyboard_ungrab();
ecore_x_window_del(drag_win);
e = E_NEW(E_Drop_Event, 1);
e->data = drag_data;
e->x = x;
e->y = y;
ev = E_NEW(E_Drop_Event, 1);
if (!ev) goto end;
ev->data = drag_data;
ev->x = x;
ev->y = y;
for (l = drop_handlers; l; l = l->next)
{
@ -161,16 +169,24 @@ e_drag_end(int x, int y)
if ((x >= h->x) && (x < h->x + h->w) && (y >= h->y) && (y < h->y + h->h)
&& (!strcmp(h->type, drag_type)))
{
h->func(h->data, drag_type, e);
h->func(h->data, drag_type, ev);
}
}
free(e);
free(ev);
end:
free(drag_type);
drag_type = NULL;
drag_data = NULL;
}
void
e_drag_callback_set(void *data, void (*func)(void *data, void *event))
{
drag_cb = func;
drag_cb_data = data;
}
E_Drop_Handler *
e_drop_handler_add(void *data, void (*func)(void *data, const char *type, void *drop), const char *type, int x, int y, int w, int h)
{
@ -209,6 +225,22 @@ _e_dnd_cb_mouse_up(void *data, int type, void *event)
e_drag_end(ev->x, ev->y);
if (drag_cb)
{
E_Drag_Event *e;
e = E_NEW(E_Drag_Event, 1);
if (e)
{
e->drag = drag;
e->x = ev->x;
e->y = ev->y;
(*drag_cb)(drag_cb_data, e);
drag_cb = NULL;
free(e);
}
}
return 1;
}

View File

@ -6,6 +6,7 @@
typedef struct _E_Drop_Handler E_Drop_Handler;
typedef struct _E_Drop_Event E_Drop_Event;
typedef struct _E_Drag_Event E_Drag_Event;
#else
#ifndef E_DND_H
@ -25,14 +26,24 @@ struct _E_Drop_Event
int x, y;
};
struct _E_Drag_Event
{
int drag;
int x, y;
};
EAPI int e_dnd_init(void);
EAPI int e_dnd_shutdown(void);
EAPI void e_drag_start(E_Zone *zone, const char *type, void *data, const char *icon_path, const char *icon);
EAPI void e_drag_start(E_Zone *zone, const char *type, void *data,
const char *icon_path, const char *icon);
EAPI void e_drag_update(int x, int y);
EAPI void e_drag_end(int x, int y);
EAPI void e_drag_callback_set(void *data, void (*func)(void *data, void *event));
EAPI E_Drop_Handler *e_drop_handler_add(void *data, void (*func)(void *data, const char *type, void *event_info), const char *type, int x, int y, int w, int h);
EAPI E_Drop_Handler *e_drop_handler_add(void *data,
void (*func)(void *data, const char *type, void *event_info),
const char *type, int x, int y, int w, int h);
EAPI void e_drop_handler_del(E_Drop_Handler *handler);
#endif

View File

@ -1365,17 +1365,28 @@ _pager_desk_cb_intercept_resize(void *data, Evas_Object *o, Evas_Coord w, Evas_C
static void
_pager_drop_cb(void *data, const char *type, void *event_info)
{
E_Drop_Event *e;
E_Drop_Event *ev;
Pager_Face *face;
int x, y, w, h;
E_Desk *desk;
E_Border *bd;
int x, y;
double w, h;
e = event_info;
ev = event_info;
face = data;
x = e->x - face->fx;
y = e->y - face->fy;
w = x / face->xnum;
h = y / face->ynum;
w = face->fw / (double) face->xnum;
h = face->fh / (double) face->ynum;
printf("We have a drop! %d %d\n", w, h);
x = (ev->x - face->fx) / w;
y = (ev->y - face->fy) / h;
desk = e_desk_at_xy_get(face->zone, x, y);
bd = ev->data;
if ((bd) && (desk) && (bd->desk != desk))
{
e_border_desk_set(bd, desk);
e_border_hide(bd, 1);
}
}