Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: Makefile.am e_border.c e_border.h e_config_dialog.c e_container.c e_int_border_locks.c e_remember.c Added Files: e_int_border_remember.c e_int_border_remember.h Log Message: remember stuff is now... a... DIALOG too :) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/Makefile.am,v retrieving revision 1.65 retrieving revision 1.66 diff -u -3 -r1.65 -r1.66 --- Makefile.am 19 Oct 2005 23:34:17 -0000 1.65 +++ Makefile.am 20 Oct 2005 12:49:46 -0000 1.66 @@ -97,7 +97,8 @@ e_int_config_focus.h \ e_icon_layout.h \ e_int_border_locks.h \ -e_thumb.h +e_thumb.h \ +e_int_border_remember.h enlightenment_src = \ e_user.c \ @@ -176,6 +177,7 @@ e_icon_layout.c \ e_int_border_locks.c \ e_thumb.c \ +e_int_border_remember.c \ $(ENLIGHTENMENTHEADERS) enlightenment_SOURCES = \ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.452 retrieving revision 1.453 diff -u -3 -r1.452 -r1.453 --- e_border.c 19 Oct 2005 09:31:33 -0000 1.452 +++ e_border.c 20 Oct 2005 12:49:47 -0000 1.453 @@ -2589,6 +2589,11 @@ e_object_del(E_OBJECT(bd->border_locks_dialog)); bd->border_locks_dialog = NULL; } + if (bd->border_remember_dialog) + { + e_object_del(E_OBJECT(bd->border_remember_dialog)); + bd->border_remember_dialog = NULL; + } _e_border_menus_del(bd); @@ -2609,8 +2614,11 @@ } if (bd->remember) { - e_remember_unuse(bd->remember); + E_Remember *rem; + + rem = bd->remember; bd->remember = NULL; + e_remember_unuse(rem); } if (!bd->already_unparented) { @@ -2688,6 +2696,11 @@ e_object_del(E_OBJECT(bd->border_locks_dialog)); bd->border_locks_dialog = NULL; } + if (bd->border_remember_dialog) + { + e_object_del(E_OBJECT(bd->border_remember_dialog)); + bd->border_remember_dialog = NULL; + } _e_border_menus_del(bd); if (bd->raise_timer) @@ -2768,12 +2781,6 @@ { int was_menu = 0; - if (bd->border_remember_menu) - { - e_object_del(E_OBJECT(bd->border_remember_menu)); - bd->border_remember_menu = NULL; - was_menu = 1; - } if (bd->border_stacking_menu) { e_object_del(E_OBJECT(bd->border_stacking_menu)); @@ -5727,458 +5734,24 @@ } static void -_e_border_menu_cb_remember(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - } - else - { - Evas_List *l; - - e_remember_unuse(bd->remember); - e_remember_del(bd->remember); - bd->remember = NULL; - for (l = bd->border_remember_menu->items; l; l = l->next) - { - E_Menu_Item *mi2; - - mi2 = l->data; - e_menu_item_toggle_set(mi2, 0); - } - } - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_first(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - bd->remember->apply_first_only = e_menu_item_toggle_get(mi); - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_match_name(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->match |= E_REMEMBER_MATCH_NAME; - else - bd->remember->match &= ~E_REMEMBER_MATCH_NAME; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_match_class(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->match |= E_REMEMBER_MATCH_CLASS; - else - bd->remember->match &= ~E_REMEMBER_MATCH_CLASS; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_match_title(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->match |= E_REMEMBER_MATCH_TITLE; - else - bd->remember->match &= ~E_REMEMBER_MATCH_TITLE; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_match_role(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->match |= E_REMEMBER_MATCH_ROLE; - else - bd->remember->match &= ~E_REMEMBER_MATCH_ROLE; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_match_type(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->match |= E_REMEMBER_MATCH_TYPE; - else - bd->remember->match &= ~E_REMEMBER_MATCH_TYPE; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_match_transient(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->match |= E_REMEMBER_MATCH_TRANSIENT; - else - bd->remember->match &= ~E_REMEMBER_MATCH_TRANSIENT; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_apply_pos(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->apply |= E_REMEMBER_APPLY_POS; - else - bd->remember->apply &= ~E_REMEMBER_APPLY_POS; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_apply_size(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->apply |= E_REMEMBER_APPLY_SIZE; - else - bd->remember->apply &= ~E_REMEMBER_APPLY_SIZE; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_apply_layer(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->apply |= E_REMEMBER_APPLY_LAYER; - else - bd->remember->apply &= ~E_REMEMBER_APPLY_LAYER; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_apply_locks(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->apply |= E_REMEMBER_APPLY_LOCKS; - else - bd->remember->apply &= ~E_REMEMBER_APPLY_LOCKS; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_apply_border(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->apply |= E_REMEMBER_APPLY_BORDER; - else - bd->remember->apply &= ~E_REMEMBER_APPLY_BORDER; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_apply_sticky(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->apply |= E_REMEMBER_APPLY_STICKY; - else - bd->remember->apply &= ~E_REMEMBER_APPLY_STICKY; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_apply_desktop(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->apply |= E_REMEMBER_APPLY_DESKTOP; - else - bd->remember->apply &= ~E_REMEMBER_APPLY_DESKTOP; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_apply_shade(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->apply |= E_REMEMBER_APPLY_SHADE; - else - bd->remember->apply &= ~E_REMEMBER_APPLY_SHADE; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_apply_zone(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->apply |= E_REMEMBER_APPLY_ZONE; - else - bd->remember->apply &= ~E_REMEMBER_APPLY_ZONE; - e_config_save_queue(); -} - -static void -_e_border_menu_cb_remember_apply_skip_winlist(void *data, E_Menu *m, E_Menu_Item *mi) +_e_border_menu_cb_locks(void *data, E_Menu *m, E_Menu_Item *mi) { E_Border *bd; + bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->apply |= E_REMEMBER_APPLY_SKIP_WINLIST; - else - bd->remember->apply &= ~E_REMEMBER_APPLY_SKIP_WINLIST; - e_config_save_queue(); + if (bd->border_locks_dialog) return; + e_int_border_locks(bd); } static void -_e_border_menu_cb_remember_apply_run(void *data, E_Menu *m, E_Menu_Item *mi) +_e_border_menu_cb_remember(void *data, E_Menu *m, E_Menu_Item *mi) { E_Border *bd; bd = data; - if (!bd->remember) - { - bd->remember = e_remember_new(); - if (bd->remember) - { - e_remember_use(bd->remember); - e_remember_update(bd->remember, bd); - } - else - return; - } - if (e_menu_item_toggle_get(mi)) - bd->remember->apply |= E_REMEMBER_APPLY_RUN; - else - bd->remember->apply &= ~E_REMEMBER_APPLY_RUN; - e_config_save_queue(); + if (bd->border_remember_dialog) return; + e_int_border_remember(bd); } - -static void -_e_border_menu_cb_locks(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (bd->border_locks_dialog) return; - e_int_border_locks(bd); -} - static void _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_X_Time timestamp) { @@ -6186,53 +5759,7 @@ E_Menu_Item *mi; if (bd->border_menu) return; - - m = e_menu_new(); - bd->border_remember_menu = m; -#define NEW_REMEMBER_MI(txt, flag, var, cb) \ - mi = e_menu_item_new(m); \ - e_menu_item_label_set(mi, txt); \ - e_menu_item_check_set(mi, 1); \ - if ((bd->remember) && (bd->remember->flag & var)) \ - e_menu_item_toggle_set(mi, 1); \ - e_menu_item_callback_set(mi, cb, bd); - - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Remember This Window")); \ - e_menu_item_check_set(mi, 1); - if (bd->remember) - e_menu_item_toggle_set(mi, 1); - e_menu_item_callback_set(mi, _e_border_menu_cb_remember, bd); - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - NEW_REMEMBER_MI(_("Remember This Instance Only"), apply_first_only, 1, _e_border_menu_cb_remember_first); - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - NEW_REMEMBER_MI(_("Match by Name"), match, E_REMEMBER_MATCH_NAME, _e_border_menu_cb_remember_match_name); - NEW_REMEMBER_MI(_("Match by Class"), match, E_REMEMBER_MATCH_CLASS, _e_border_menu_cb_remember_match_class); - NEW_REMEMBER_MI(_("Match by Title"), match, E_REMEMBER_MATCH_TITLE, _e_border_menu_cb_remember_match_title); - NEW_REMEMBER_MI(_("Match by Role"), match, E_REMEMBER_MATCH_ROLE, _e_border_menu_cb_remember_match_role); - NEW_REMEMBER_MI(_("Match by Window Type"), match, E_REMEMBER_MATCH_TYPE, _e_border_menu_cb_remember_match_type); - NEW_REMEMBER_MI(_("Match by Transient Status"), match, E_REMEMBER_MATCH_TRANSIENT, _e_border_menu_cb_remember_match_transient); - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - NEW_REMEMBER_MI(_("Remember Position"), apply, E_REMEMBER_APPLY_POS, _e_border_menu_cb_remember_apply_pos); - NEW_REMEMBER_MI(_("Remember Size"), apply, E_REMEMBER_APPLY_SIZE, _e_border_menu_cb_remember_apply_size); - NEW_REMEMBER_MI(_("Remember Stacking"), apply, E_REMEMBER_APPLY_LAYER, _e_border_menu_cb_remember_apply_layer); - NEW_REMEMBER_MI(_("Remember Locks"), apply, E_REMEMBER_APPLY_LOCKS, _e_border_menu_cb_remember_apply_locks); - NEW_REMEMBER_MI(_("Remember Border"), apply, E_REMEMBER_APPLY_BORDER, _e_border_menu_cb_remember_apply_border); - NEW_REMEMBER_MI(_("Remember Stickiness"), apply, E_REMEMBER_APPLY_STICKY, _e_border_menu_cb_remember_apply_sticky); - NEW_REMEMBER_MI(_("Remember Desktop"), apply, E_REMEMBER_APPLY_DESKTOP, _e_border_menu_cb_remember_apply_desktop); - NEW_REMEMBER_MI(_("Remember Shaded State"), apply, E_REMEMBER_APPLY_SHADE, _e_border_menu_cb_remember_apply_shade); - NEW_REMEMBER_MI(_("Remember Zone"), apply, E_REMEMBER_APPLY_ZONE, _e_border_menu_cb_remember_apply_zone); - NEW_REMEMBER_MI(_("Remember Skip Window List"), apply, E_REMEMBER_APPLY_SKIP_WINLIST, _e_border_menu_cb_remember_apply_skip_winlist); -/* - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - NEW_REMEMBER_MI(_("Run this porgram on login"), apply, E_REMEMBER_APPLY_RUN, _e_border_menu_cb_remember_apply_run); - */ - m = e_menu_new(); bd->border_stacking_menu = m; /* Only allow to change layer for windows in "normal" layers */ @@ -6412,7 +5939,7 @@ "widgets/border/default/locks"); mi = e_menu_item_new(m); e_menu_item_label_set(mi, _("Remember")); - e_menu_item_submenu_set(mi, bd->border_remember_menu); + e_menu_item_callback_set(mi, _e_border_menu_cb_remember, bd); e_menu_item_icon_edje_set(mi, (char *)e_theme_edje_file_get("base/theme/borders", "widgets/border/default/remember"), =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v retrieving revision 1.120 retrieving revision 1.121 diff -u -3 -r1.120 -r1.121 --- e_border.h 17 Oct 2005 11:51:46 -0000 1.120 +++ e_border.h 20 Oct 2005 12:49:47 -0000 1.121 @@ -352,7 +352,7 @@ Evas_List *stick_desks; E_Menu *border_menu; E_Config_Dialog *border_locks_dialog; - E_Menu *border_remember_menu; + E_Config_Dialog *border_remember_dialog; E_Menu *border_stacking_menu; Evas_List *pending_move_resize; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config_dialog.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- e_config_dialog.c 16 Oct 2005 07:32:11 -0000 1.8 +++ e_config_dialog.c 20 Oct 2005 12:49:47 -0000 1.9 @@ -155,14 +155,18 @@ _e_config_dialog_cb_apply(void *data, E_Dialog *dia) { E_Config_Dialog *cfd; + int ok = 0; cfd = dia->data; if (cfd->view_type == E_CONFIG_DIALOG_CFDATA_TYPE_BASIC) - cfd->view.basic.apply_cfdata(cfd, cfd->cfdata); + ok = cfd->view.basic.apply_cfdata(cfd, cfd->cfdata); else - cfd->view.advanced.apply_cfdata(cfd, cfd->cfdata); - e_dialog_button_disable_num_set(cfd->dia, 0, 1); - e_dialog_button_disable_num_set(cfd->dia, 1, 1); + ok = cfd->view.advanced.apply_cfdata(cfd, cfd->cfdata); + if (ok) + { + e_dialog_button_disable_num_set(cfd->dia, 0, 1); + e_dialog_button_disable_num_set(cfd->dia, 1, 1); + } } static void =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_container.c,v retrieving revision 1.91 retrieving revision 1.92 diff -u -3 -r1.91 -r1.92 --- e_container.c 8 Oct 2005 04:53:10 -0000 1.91 +++ e_container.c 20 Oct 2005 12:49:47 -0000 1.92 @@ -938,6 +938,10 @@ ecore_x_window_del(con->event_win); /* We can't use e_object_del here, because border adds a ref to itself * when it is removed, and the ref is never unref'ed */ +/* FIXME: had to disable this as it was freeing already freed items during + * looping (particularly remember/lock config dialogs). this is just + * disabled until we put in some special handling for this + * for (i = 0; i < 7; i++) { for (l = con->layers[i].clients; l;) @@ -947,6 +951,7 @@ e_object_free(E_OBJECT(tmp->data)); } } + */ for (l = con->zones; l;) { tmp = l; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_border_locks.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_int_border_locks.c 17 Oct 2005 14:33:57 -0000 1.3 +++ e_int_border_locks.c 20 Oct 2005 12:49:47 -0000 1.4 @@ -60,7 +60,7 @@ v.basic.create_widgets = _basic_create_widgets; v.advanced.apply_cfdata = _advanced_apply_data; v.advanced.create_widgets = _advanced_create_widgets; - /* create config diaolg for NULL object/data */ + /* create config diaolg for bd object/data */ cfd = e_config_dialog_new(bd->zone->container, _("Window Locks"), NULL, 0, &v, bd); bd->border_locks_dialog = cfd; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_remember.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- e_remember.c 16 Oct 2005 04:25:57 -0000 1.10 +++ e_remember.c 20 Oct 2005 12:49:47 -0000 1.11 @@ -75,7 +75,20 @@ if (rem->delete_me) return; if (rem->used_count != 0) { + Evas_List *l; + rem->delete_me = 1; + for (l = e_border_client_list(); l; l = l->next) + { + E_Border *bd; + + bd = l->data; + if (bd->remember == rem) + { + bd->remember = NULL; + e_remember_unuse(rem); + } + } return; } _e_remember_free(rem); ------------------------------------------------------- This SF.Net email is sponsored by: Power Architecture Resource Center: Free content, downloads, discussions, and more. http://solutions.newsforge.com/ibmarch.tmpl _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs