diff --git a/TODO b/TODO
index ef8e83e86..8fd5fc9b6 100644
--- a/TODO
+++ b/TODO
@@ -8,7 +8,6 @@ Some of the things (in very short form) that need to be done to E17...
BUGS / FIXES
-------------------------------------------------------------------------------
-* conifguring buttons for pager drag is broken
* apparently with locales other than english/c the about box textblock breaks
newlines on every word (maybe the utf8 decode patch? for evas?)
* IBar will resize itself down to single icon size on start/restart under some
diff --git a/src/modules/pager/e_mod_config.c b/src/modules/pager/e_mod_config.c
index b39d67821..1a5c2f7a5 100644
--- a/src/modules/pager/e_mod_config.c
+++ b/src/modules/pager/e_mod_config.c
@@ -17,21 +17,17 @@ struct _E_Config_Dialog_Data
unsigned char btn_noplace;
int flip_desk;
- struct
- {
- Ecore_X_Window bind_win;
- E_Dialog *dia;
- Evas_List *handlers;
-
- unsigned char *button1;
- unsigned char *button2;
- } grab;
-
- struct
- {
- Evas_Object *o_btn1;
- Evas_Object *o_btn2;
- } gui;
+ struct {
+ Ecore_X_Window bind_win;
+ E_Dialog *dia;
+ Evas_List *handlers;
+ int btn;
+ } grab;
+
+ struct {
+ Evas_Object *o_btn1;
+ Evas_Object *o_btn2;
+ } gui;
};
/* Protos */
@@ -209,15 +205,9 @@ _grab_wnd_show(void *data1, void *data2)
cfdata = data2;
if ((Pager_Grab_Button)data1 == GRAB_BUTTON_DRAG)
- {
- cfdata->grab.button1 = &(cfdata->btn_drag);
- cfdata->grab.button2 = &(cfdata->btn_noplace);
- }
+ cfdata->grab.btn = 1;
else
- {
- cfdata->grab.button1 = &(cfdata->btn_noplace);
- cfdata->grab.button2 = &(cfdata->btn_drag);
- }
+ cfdata->grab.btn = 0;
cfdata->grab.dia = e_dialog_new(e_container_current_get(man), "Pager", "_pager_button_grab_dialog");
if (!cfdata->grab.dia) return;
@@ -229,7 +219,7 @@ _grab_wnd_show(void *data1, void *data2)
e_win_centered_set(cfdata->grab.dia->win, 1);
e_win_borderless_set(cfdata->grab.dia->win, 1);
- cfdata->grab.bind_win = ecore_x_window_input_new(man->root, 0, 0, 1, 1);
+ cfdata->grab.bind_win = ecore_x_window_input_new(man->root, 0, 0, man->w, man->h);
ecore_x_window_show(cfdata->grab.bind_win);
e_grabinput_get(cfdata->grab.bind_win, 0, cfdata->grab.bind_win);
@@ -273,15 +263,17 @@ _grab_mouse_down_cb(void *data, int type, void *event)
if (ev->button != 3)
{
- if (ev->button == *(cfdata->grab.button2))
- {
- *(cfdata->grab.button2) = *(cfdata->grab.button1);
- *(cfdata->grab.button1) = ev->button;
- }
+ if (cfdata->grab.btn == 1)
+ cfdata->btn_drag = ev->button;
else
- {
- *(cfdata->grab.button1) = ev->button;
- }
+ cfdata->btn_noplace = ev->button;
+ }
+ else
+ {
+ e_util_dialog_show(_("Error - Invalid Button"),
+ _("You cannot use the right mouse button
"
+ "for this as it is already taken by internal
"
+ "code for context menus."));
}
_grab_wnd_hide(cfdata);
@@ -301,8 +293,10 @@ _grab_key_down_cb(void *data, int type, void *event)
if (!strcmp(ev->keyname, "Escape")) _grab_wnd_hide(cfdata);
if (!strcmp(ev->keyname, "Delete"))
{
- *(cfdata->grab.button1) = 0;
- _grab_wnd_hide(cfdata);
+ if (cfdata->grab.btn == 1)
+ cfdata->btn_drag = 0;
+ else
+ cfdata->btn_noplace = 0;
}
return 1;
}