Enlightenment CVS committal Author : devilhorns Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/pager Modified Files: e_mod_config.c Log Message: Better pager module config dialog. Now fits in 640x480. =================================================================== RCS file: /cvs/e/e17/apps/e/src/modules/pager/e_mod_config.c,v retrieving revision 1.33 retrieving revision 1.34 diff -u -3 -r1.33 -r1.34 --- e_mod_config.c 14 Dec 2007 22:30:44 -0000 1.33 +++ e_mod_config.c 18 Dec 2007 00:46:46 -0000 1.34 @@ -1,112 +1,102 @@ #include "e.h" #include "e_mod_main.h" -typedef enum _Pager_Grab_Button Pager_Grab_Button; -enum _Pager_Grab_Button -{ - GRAB_BUTTON_DRAG, - GRAB_BUTTON_NOPLACE, - GRAB_BUTTON_DESK -}; +#define BUTTON_DRAG 0 +#define BUTTON_NOPLACE 1 +#define BUTTON_DESK 2 -struct _E_Config_Dialog_Data +struct _E_Config_Dialog_Data { - int show_popup; - double popup_speed; - int show_popup_urgent; - int popup_urgent_stick; - double popup_urgent_speed; - int popup_pager_height; - int drag_resist; - unsigned int btn_drag; - unsigned int btn_noplace; - unsigned int btn_desk; - int flip_desk; - - struct { - Ecore_X_Window bind_win; - E_Dialog *dia; - Evas_List *handlers; - int btn; - } grab; - - struct { - Evas_Object *o_urgent_stick; - Evas_Object *o_urgent_speed; - Evas_Object *o_btn1; - Evas_Object *o_btn2; - Evas_Object *o_btn3; - } gui; + struct + { + int show, urgent_show, urgent_stick; + double speed, urgent_speed; + int pager_height; + } popup; + int drag_resist, flip_desk; + struct + { + unsigned int drag, noplace, desk; + } btn; + struct + { + Ecore_X_Window bind_win; + E_Dialog *dia; + Evas_List *hdls; + int btn; + } grab; + struct + { + Evas_Object *o_btn1, *o_btn2, *o_btn3; + } gui; }; -/* Protos */ static void *_create_data(E_Config_Dialog *cfd); +static void _fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata); static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); -static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); -static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); -static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); -static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); -static void _advanced_update_button_label(E_Config_Dialog_Data *cfdata); +static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); +static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static Evas_Object *_adv_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); +static int _adv_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); static void _grab_wnd_show(void *data1, void *data2); +static int _grab_cb_mouse_down(void *data, int type, void *event); +static int _grab_cb_key_down(void *data, int type, void *event); static void _grab_wnd_hide(E_Config_Dialog_Data *cfdata); -static int _grab_mouse_down_cb(void *data, int type, void *event); -static int _grab_key_down_cb(void *data, int type, void *event); -static void _check_urgent_stick_cb_change(void *data, Evas_Object *obj); +static void _adv_update_btn_lbl(E_Config_Dialog_Data *cfdata); void -_config_pager_module(Config_Item *ci) +_config_pager_module(Config_Item *ci) { E_Config_Dialog *cfd; E_Config_Dialog_View *v; + E_Container *con; char buf[4096]; - + v = E_NEW(E_Config_Dialog_View, 1); - + if (!v) return; + + snprintf(buf, sizeof(buf), "%s/e-module-pager.edj", + e_module_dir_get(pager_config->module)); v->create_cfdata = _create_data; v->free_cfdata = _free_data; - v->basic.apply_cfdata = _basic_apply_data; - v->basic.create_widgets = _basic_create_widgets; - v->advanced.apply_cfdata = _advanced_apply_data; - v->advanced.create_widgets = _advanced_create_widgets; - - snprintf(buf, sizeof(buf), "%s/e-module-pager.edj", e_module_dir_get(pager_config->module)); - cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()), - _("Pager Configuration"), - "E", "_e_mod_pager_config_dialog", - buf, 0, v, ci); + v->basic.create_widgets = _basic_create; + v->basic.apply_cfdata = _basic_apply; + v->advanced.create_widgets = _adv_create; + v->advanced.apply_cfdata = _adv_apply; + + con = e_container_current_get(e_manager_current_get()); + cfd = e_config_dialog_new(con, _("Pager Configuration"), "E", + "_e_mod_pager_config_dialog", buf, 0, v, ci); pager_config->config_dialog = cfd; } -static void -_fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata) -{ - /* FIXME: configure zone config item */ - cfdata->show_popup = pager_config->popup; - cfdata->popup_speed = pager_config->popup_speed; - cfdata->show_popup_urgent = pager_config->popup_urgent; - cfdata->popup_urgent_stick = pager_config->popup_urgent_stick; - cfdata->popup_urgent_speed = pager_config->popup_urgent_speed; - cfdata->popup_pager_height = pager_config->popup_pager_height; - cfdata->drag_resist = pager_config->drag_resist; - cfdata->btn_drag = pager_config->btn_drag; - cfdata->btn_noplace = pager_config->btn_noplace; - cfdata->btn_desk = pager_config->btn_desk; - cfdata->flip_desk = pager_config->flip_desk; -} - static void * _create_data(E_Config_Dialog *cfd) { E_Config_Dialog_Data *cfdata; - Config_Item *ci; - - ci = cfd->data; + cfdata = E_NEW(E_Config_Dialog_Data, 1); - _fill_data(ci, cfdata); + _fill_data(cfd->data, cfdata); return cfdata; } static void +_fill_data(Config_Item *ci, E_Config_Dialog_Data *cfdata) +{ + cfdata->popup.show = pager_config->popup; + cfdata->popup.speed = pager_config->popup_speed; + cfdata->popup.urgent_show = pager_config->popup_urgent; + cfdata->popup.urgent_stick = pager_config->popup_urgent_stick; + cfdata->popup.urgent_speed = pager_config->popup_urgent_speed; + cfdata->popup.pager_height = pager_config->popup_pager_height; + cfdata->drag_resist = pager_config->drag_resist; + cfdata->btn.drag = pager_config->btn_drag; + cfdata->btn.noplace = pager_config->btn_noplace; + cfdata->btn.desk = pager_config->btn_desk; + cfdata->flip_desk = pager_config->flip_desk; +} + +static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { pager_config->config_dialog = NULL; @@ -114,152 +104,148 @@ } static Evas_Object * -_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) +_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) { - Evas_Object *o, *of, *ob; + Evas_Object *o = NULL, *of = NULL, *ow = NULL; o = e_widget_list_add(evas, 0, 0); of = e_widget_framelist_add(evas, _("General Settings"), 0); - ob = e_widget_check_add(evas, _("Show Popup on desktop change"), &(cfdata->show_popup)); - e_widget_framelist_object_append(of, ob); + ow = e_widget_check_add(evas, _("Flip desktop on mouse wheel"), + &(cfdata->flip_desk)); + e_widget_framelist_object_append(of, ow); + e_widget_list_object_append(o, of, 1, 1, 0.5); + + of = e_widget_framelist_add(evas, _("Popup Settings"), 0); + ow = e_widget_check_add(evas, _("Show popup on desktop change"), + &(cfdata->popup.show)); + e_widget_framelist_object_append(of, ow); + ow = e_widget_check_add(evas, _("Show popup for urgent windows"), + &(cfdata->popup.urgent_show)); + e_widget_framelist_object_append(of, ow); e_widget_list_object_append(o, of, 1, 1, 0.5); return o; } static int -_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +_basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { - pager_config->popup = cfdata->show_popup; - _pager_cb_config_updated(); + pager_config->popup = cfdata->popup.show; + pager_config->flip_desk = cfdata->flip_desk; + pager_config->popup_urgent = cfdata->popup.urgent_show; e_config_save_queue(); return 1; } static Evas_Object * -_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) +_adv_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) { - Evas_Object *o, *of, *of2, *ob; + Evas_Object *o = NULL, *of = NULL, *ow = NULL; o = e_widget_list_add(evas, 0, 0); - - of = e_widget_frametable_add(evas, _("Pager Settings"), 0); - ob = e_widget_check_add(evas, _("Flip desktop on mouse wheel"), &(cfdata->flip_desk)); - e_widget_frametable_object_append(of, ob, 1, 1, 1, 1, 1, 1, 0, 0); - ob = e_widget_label_add(evas, _("Select and Slide button")); - e_widget_frametable_object_append(of, ob, 1, 2, 1, 1, 1, 1, 1, 1); - ob = e_widget_label_add(evas, _("Drag and Drop button (Keeps rel. loc.)")); - e_widget_frametable_object_append(of, ob, 1, 3, 1, 1, 1, 1, 1, 1); - ob = e_widget_label_add(evas, _("Drag whole desktop (Move all windows of a desktop)")); - e_widget_frametable_object_append(of, ob, 1, 4, 1, 1, 1, 1, 1, 1); - ob = e_widget_button_add(evas, _("Click to set"), NULL, _grab_wnd_show, (void *)GRAB_BUTTON_DRAG, cfdata); - e_widget_frametable_object_append(of, ob, 2, 2, 1, 1, 1, 1, 0, 0); - cfdata->gui.o_btn1 = ob; - ob = e_widget_button_add(evas, _("Click to set"), NULL, _grab_wnd_show, (void *)GRAB_BUTTON_NOPLACE, cfdata); - e_widget_frametable_object_append(of, ob, 2, 3, 1, 1, 1, 1, 0, 0); - cfdata->gui.o_btn2 = ob; - ob = e_widget_button_add(evas, _("Click to set"), NULL, _grab_wnd_show, (void *)GRAB_BUTTON_DESK, cfdata); - e_widget_frametable_object_append(of, ob, 2, 4, 1, 1, 1, 1, 0, 0); - cfdata->gui.o_btn3 = ob; - _advanced_update_button_label(cfdata); - ob = e_widget_label_add(evas, _("Resistance to dragging")); - e_widget_frametable_object_append(of, ob, 1, 5, 1, 1, 1, 1, 0, 0); - ob = e_widget_slider_add(evas, 1, 0, _("%.0f px"), 0.0, 10.0, 1.0, 0, NULL, &(cfdata->drag_resist), 200); - e_widget_frametable_object_append(of, ob, 1, 6, 2, 1, 1, 1, 0, 0); + of = e_widget_frametable_add(evas, _("General Settings"), 0); + ow = e_widget_check_add(evas, _("Flip desktop on mouse wheel"), + &(cfdata->flip_desk)); + e_widget_frametable_object_append(of, ow, 0, 0, 2, 1, 1, 0, 1, 0); + + ow = e_widget_label_add(evas, _("Select and Slide button")); + e_widget_frametable_object_append(of, ow, 0, 1, 1, 1, 1, 0, 1, 0); + ow = e_widget_button_add(evas, _("Click to set"), NULL, + _grab_wnd_show, (void *)BUTTON_DRAG, cfdata); + cfdata->gui.o_btn1 = ow; + e_widget_frametable_object_append(of, ow, 1, 1, 1, 1, 0, 0, 1, 0); + + ow = e_widget_label_add(evas, _("Drag and Drop button")); + e_widget_frametable_object_append(of, ow, 0, 2, 1, 1, 1, 0, 1, 0); + ow = e_widget_button_add(evas, _("Click to set"), NULL, + _grab_wnd_show, (void *)BUTTON_NOPLACE, cfdata); + cfdata->gui.o_btn2 = ow; + e_widget_frametable_object_append(of, ow, 1, 2, 1, 1, 0, 0, 1, 0); + + ow = e_widget_label_add(evas, _("Drag whole desktop")); + e_widget_frametable_object_append(of, ow, 0, 3, 1, 1, 1, 0, 1, 0); + ow = e_widget_button_add(evas, _("Click to set"), NULL, + _grab_wnd_show, (void *)BUTTON_DESK, cfdata); + cfdata->gui.o_btn3 = ow; + e_widget_frametable_object_append(of, ow, 1, 3, 1, 1, 0, 0, 1, 0); + _adv_update_btn_lbl(cfdata); + + ow = e_widget_label_add(evas, _("Resistance to dragging")); + e_widget_frametable_object_append(of, ow, 0, 4, 1, 1, 1, 0, 1, 0); + ow = e_widget_slider_add(evas, 1, 0, _("%.0f px"), 0.0, 10.0, 1.0, 0, NULL, + &(cfdata->drag_resist), 100); + e_widget_frametable_object_append(of, ow, 1, 4, 1, 1, 1, 0, 1, 0); e_widget_list_object_append(o, of, 1, 1, 0.5); - of = e_widget_framelist_add(evas, _("Pager Popup Settings"), 0); - ob = e_widget_check_add(evas, _("Show Popup on desktop change"), &(cfdata->show_popup)); - e_widget_framelist_object_append(of, ob); - ob = e_widget_label_add(evas, _("Popup Pager Height")); - e_widget_framelist_object_append(of, ob); - ob = e_widget_slider_add(evas, 1, 0, _("%.0f px"), 20.0, 200.0, 0.1, 0, NULL, &(cfdata->popup_pager_height), 200); - e_widget_framelist_object_append(of, ob); - ob = e_widget_label_add(evas, _("Popup Speed")); - e_widget_framelist_object_append(of, ob); - ob = e_widget_slider_add(evas, 1, 0, _("%1.1f seconds"), 0.1, 10.0, 0.1, 0, &(cfdata->popup_speed), NULL, 200); - e_widget_framelist_object_append(of, ob); - - of2 = e_widget_framelist_add(evas, _("Urgent window"), 0); - ob = e_widget_check_add(evas, _("Show Popup on urgent window"), &(cfdata->show_popup_urgent)); - e_widget_framelist_object_append(of2, ob); - ob = e_widget_check_add(evas, _("Popup on urgent window sticks on the screen"), &(cfdata->popup_urgent_stick)); - cfdata->gui.o_urgent_stick = ob; - e_widget_on_change_hook_set(ob, _check_urgent_stick_cb_change, cfdata); - e_widget_framelist_object_append(of2, ob); - ob = e_widget_label_add(evas, _("Popup Speed")); - e_widget_framelist_object_append(of2, ob); - ob = e_widget_slider_add(evas, 1, 0, _("%1.1f seconds"), 0.1, 10.0, 0.1, 0, &(cfdata->popup_urgent_speed), NULL, 200); - cfdata->gui.o_urgent_speed = ob; - _check_urgent_stick_cb_change(cfdata, cfdata->gui.o_urgent_stick); - e_widget_framelist_object_append(of2, ob); + of = e_widget_frametable_add(evas, _("Popup Settings"), 0); + ow = e_widget_check_add(evas, _("Show popup on desktop change"), + &(cfdata->flip_desk)); + e_widget_frametable_object_append(of, ow, 0, 0, 2, 1, 1, 0, 1, 0); + ow = e_widget_label_add(evas, _("Popup pager height")); + e_widget_frametable_object_append(of, ow, 0, 1, 1, 1, 1, 0, 1, 0); + ow = e_widget_slider_add(evas, 1, 0, _("%.0f px"), 0.0, 10.0, 1.0, 0, NULL, + &(cfdata->popup.pager_height), 100); + e_widget_frametable_object_append(of, ow, 1, 1, 1, 1, 1, 0, 1, 0); + ow = e_widget_label_add(evas, _("Popup speed")); + e_widget_frametable_object_append(of, ow, 0, 2, 1, 1, 1, 0, 1, 0); + ow = e_widget_slider_add(evas, 1, 0, _("%1.1f seconds"), 0.1, 10.0, 0.1, 0, + &(cfdata->popup.speed), NULL, 100); + e_widget_frametable_object_append(of, ow, 1, 2, 1, 1, 1, 0, 1, 0); + e_widget_list_object_append(o, of, 1, 1, 0.5); - e_widget_framelist_object_append(of, of2); + of = e_widget_frametable_add(evas, _("Urgent Window Settings"), 0); + ow = e_widget_check_add(evas, _("Show popup on urgent window"), + &(cfdata->popup.urgent_show)); + e_widget_frametable_object_append(of, ow, 0, 0, 2, 1, 1, 0, 1, 0); + ow = e_widget_check_add(evas, _("Popup on urgent window sticks on the screen"), + &(cfdata->popup.urgent_stick)); + e_widget_frametable_object_append(of, ow, 0, 1, 2, 1, 1, 0, 1, 0); + ow = e_widget_label_add(evas, _("Popup speed")); + e_widget_frametable_object_append(of, ow, 0, 2, 1, 1, 1, 0, 1, 0); + ow = e_widget_slider_add(evas, 1, 0, _("%1.1f seconds"), 0.1, 10.0, 0.1, 0, + &(cfdata->popup.urgent_speed), NULL, 100); + e_widget_frametable_object_append(of, ow, 1, 2, 1, 1, 1, 0, 1, 0); e_widget_list_object_append(o, of, 1, 1, 0.5); return o; } static int -_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +_adv_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { - pager_config->popup = cfdata->show_popup; - pager_config->popup_speed = cfdata->popup_speed; - pager_config->popup_urgent = cfdata->show_popup_urgent; - pager_config->popup_urgent_stick = cfdata->popup_urgent_stick; - pager_config->popup_urgent_speed = cfdata->popup_urgent_speed; - pager_config->popup_pager_height = cfdata->popup_pager_height; - pager_config->drag_resist = cfdata->drag_resist; - pager_config->btn_drag = cfdata->btn_drag; - pager_config->btn_noplace = cfdata->btn_noplace; - pager_config->btn_desk = cfdata->btn_desk; + pager_config->popup = cfdata->popup.show; + pager_config->popup_speed = cfdata->popup.speed; pager_config->flip_desk = cfdata->flip_desk; - _pager_cb_config_updated(); + pager_config->popup_urgent = cfdata->popup.urgent_show; + pager_config->popup_urgent_stick = cfdata->popup.urgent_stick; + pager_config->popup_urgent_speed = cfdata->popup.urgent_speed; + pager_config->popup_pager_height = cfdata->popup.pager_height; + pager_config->drag_resist = cfdata->drag_resist; + pager_config->btn_drag = cfdata->btn.drag; + pager_config->btn_noplace = cfdata->btn.noplace; + pager_config->btn_desk = cfdata->btn.desk; e_config_save_queue(); return 1; } -static void -_advanced_update_button_label(E_Config_Dialog_Data *cfdata) -{ - char label[256] = ""; - - if (cfdata->btn_drag) - snprintf(label, sizeof(label), _("Button %i"), cfdata->btn_drag); - else - snprintf(label, sizeof(label), _("Click to set")); - e_widget_button_label_set(cfdata->gui.o_btn1, label); - - if (cfdata->btn_noplace) - snprintf(label, sizeof(label), _("Button %i"), cfdata->btn_noplace); - else - snprintf(label, sizeof(label), _("Click to set")); - e_widget_button_label_set(cfdata->gui.o_btn2, label); - - if (cfdata->btn_desk) - snprintf(label, sizeof(label), _("Button %i"), cfdata->btn_desk); - else - snprintf(label, sizeof(label), _("Click to set")); - e_widget_button_label_set(cfdata->gui.o_btn3, label); -} - -static void -_grab_wnd_show(void *data1, void *data2) +static void +_grab_wnd_show(void *data1, void *data2) { - E_Manager *man; - E_Config_Dialog_Data *cfdata; + E_Manager *man = NULL; + E_Config_Dialog_Data *cfdata = NULL; + Ecore_Event_Handler *hdl = NULL; + if (!(cfdata = data2)) return; man = e_manager_current_get(); - cfdata = data2; - if ((Pager_Grab_Button)data1 == GRAB_BUTTON_DRAG) + cfdata->grab.btn = 0; + if ((int)data1 == BUTTON_DRAG) cfdata->grab.btn = 1; - else if ((Pager_Grab_Button)data1 == GRAB_BUTTON_NOPLACE) + else if ((int)data1 == BUTTON_NOPLACE) cfdata->grab.btn = 2; - else - cfdata->grab.btn = 0; - cfdata->grab.dia = e_dialog_new(e_container_current_get(man), "Pager", "_pager_button_grab_dialog"); + cfdata->grab.dia = e_dialog_new(e_container_current_get(man), "Pager", + "_pager_button_grab_dialog"); if (!cfdata->grab.dia) return; e_dialog_title_set(cfdata->grab.dia, _("Pager Button Grab")); e_dialog_icon_set(cfdata->grab.dia, "enlightenment/mouse_clean", 48); @@ -269,102 +255,118 @@ 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, man->w, man->h); + 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); - - cfdata->grab.handlers = evas_list_append(cfdata->grab.handlers, - ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, - _grab_key_down_cb, cfdata)); - cfdata->grab.handlers = evas_list_append(cfdata->grab.handlers, - ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, - _grab_mouse_down_cb, cfdata)); - - e_dialog_show(cfdata->grab.dia); - ecore_x_icccm_transient_for_set(cfdata->grab.dia->win->evas_win, pager_config->config_dialog->dia->win->evas_win); -} - -static void -_grab_wnd_hide(E_Config_Dialog_Data *cfdata) -{ - while (cfdata->grab.handlers) + if (!e_grabinput_get(cfdata->grab.bind_win, 0, cfdata->grab.bind_win)) { - ecore_event_handler_del(cfdata->grab.handlers->data); - cfdata->grab.handlers = evas_list_remove_list(cfdata->grab.handlers, cfdata->grab.handlers); + ecore_x_window_del(cfdata->grab.bind_win); + cfdata->grab.bind_win = 0; + e_object_del(E_OBJECT(cfdata->grab.dia)); + cfdata->grab.dia = NULL; + return; } - cfdata->grab.handlers = NULL; - e_grabinput_release(cfdata->grab.bind_win, cfdata->grab.bind_win); - ecore_x_window_del(cfdata->grab.bind_win); - cfdata->grab.bind_win = 0; + hdl = ecore_event_handler_add(ECORE_X_EVENT_KEY_DOWN, + _grab_cb_key_down, cfdata); + cfdata->grab.hdls = evas_list_append(cfdata->grab.hdls, hdl); + hdl = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_BUTTON_DOWN, + _grab_cb_mouse_down, cfdata); + cfdata->grab.hdls = evas_list_append(cfdata->grab.hdls, hdl); - e_object_del(E_OBJECT(cfdata->grab.dia)); - cfdata->grab.dia = NULL; - _advanced_update_button_label(cfdata); + e_dialog_show(cfdata->grab.dia); + ecore_x_icccm_transient_for_set(cfdata->grab.dia->win->evas_win, + pager_config->config_dialog->dia->win->evas_win); } -static int -_grab_mouse_down_cb(void *data, int type, void *event) +static int +_grab_cb_mouse_down(void *data, int type, void *event) { - E_Config_Dialog_Data *cfdata; + E_Config_Dialog_Data *cfdata = NULL; Ecore_X_Event_Mouse_Button_Down *ev; - - ev = event; - cfdata = data; - if (ev->button != 3) + ev = event; + if (!(cfdata = data)) return 1; + if (ev->win != cfdata->grab.bind_win) return 1; + if (ev->button != 3) { if (cfdata->grab.btn == 1) - cfdata->btn_drag = ev->button; + cfdata->btn.drag = ev->button; else if (cfdata->grab.btn == 2) - cfdata->btn_noplace = ev->button; + cfdata->btn.noplace = ev->button; else - cfdata->btn_desk = ev->button; + cfdata->btn.desk = ev->button; } - else + else { - e_util_dialog_show(_("Error - Invalid Button"), + e_util_dialog_show(_("Error - Invalid Button"), _("You cannot use the right mouse button<br>" "for this as it is already taken by internal<br>" "code for context menus.")); } - _grab_wnd_hide(cfdata); return 1; } -static int -_grab_key_down_cb(void *data, int type, void *event) +static int +_grab_cb_key_down(void *data, int type, void *event) { - E_Config_Dialog_Data *cfdata; - Ecore_X_Event_Key_Down *ev = event; - - cfdata = data; + E_Config_Dialog_Data *cfdata = NULL; + Ecore_X_Event_Key_Down *ev; + ev = event; + if (!(cfdata = data)) return 1; if (ev->win != cfdata->grab.bind_win) return 1; - if (!strcmp(ev->keyname, "Escape")) _grab_wnd_hide(cfdata); - if (!strcmp(ev->keyname, "Delete")) + if (!strcmp(ev->keyname, "Delete")) { if (cfdata->grab.btn == 1) - cfdata->btn_drag = 0; + cfdata->btn.drag = 0; else if (cfdata->grab.btn == 2) - cfdata->btn_noplace = 0; + cfdata->btn.noplace = 0; else - cfdata->btn_desk = 0; + cfdata->btn.desk = 0; _grab_wnd_hide(cfdata); } return 1; } -static void -_check_urgent_stick_cb_change(void *data, Evas_Object *obj) +static void +_grab_wnd_hide(E_Config_Dialog_Data *cfdata) { - E_Config_Dialog_Data *cfdata; + while (cfdata->grab.hdls) + { + ecore_event_handler_del(cfdata->grab.hdls->data); + cfdata->grab.hdls = evas_list_remove_list(cfdata->grab.hdls, cfdata->grab.hdls); + } + cfdata->grab.hdls = NULL; + e_grabinput_release(cfdata->grab.bind_win, cfdata->grab.bind_win); + if (cfdata->grab.bind_win) ecore_x_window_del(cfdata->grab.bind_win); + cfdata->grab.bind_win = 0; + + if (cfdata->grab.dia) + e_object_del(E_OBJECT(cfdata->grab.dia)); + cfdata->grab.dia = NULL; - cfdata = data; + _adv_update_btn_lbl(cfdata); +} + +static void +_adv_update_btn_lbl(E_Config_Dialog_Data *cfdata) +{ + char lbl[256] = ""; - if (e_widget_check_checked_get(cfdata->gui.o_urgent_stick)) - e_widget_disabled_set(cfdata->gui.o_urgent_speed, 1); - else - e_widget_disabled_set(cfdata->gui.o_urgent_speed, 0); + snprintf(lbl, sizeof(lbl), _("Click to set")); + if (cfdata->btn.drag) + snprintf(lbl, sizeof(lbl), _("Button %i"), cfdata->btn.drag); + e_widget_button_label_set(cfdata->gui.o_btn1, lbl); + + snprintf(lbl, sizeof(lbl), _("Click to set")); + if (cfdata->btn.noplace) + snprintf(lbl, sizeof(lbl), _("Button %i"), cfdata->btn.noplace); + e_widget_button_label_set(cfdata->gui.o_btn2, lbl); + + snprintf(lbl, sizeof(lbl), _("Click to set")); + if (cfdata->btn.desk) + snprintf(lbl, sizeof(lbl), _("Button %i"), cfdata->btn.desk); + e_widget_button_label_set(cfdata->gui.o_btn3, lbl); } ------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs