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_includes.h Added Files: e_int_border_menu.c e_int_border_menu.h Log Message: clean up sb removal. move menu border to its own file =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/Makefile.am,v retrieving revision 1.74 retrieving revision 1.75 diff -u -3 -r1.74 -r1.75 --- Makefile.am 30 Oct 2005 09:40:34 -0000 1.74 +++ Makefile.am 30 Oct 2005 11:05:57 -0000 1.75 @@ -107,7 +107,8 @@ e_widget_fileman.h \ e_scrollframe.h \ e_file_selector.h \ -e_file_dialog.h +e_file_dialog.h \ +e_int_border_menu.h enlightenment_src = \ e_user.c \ @@ -196,6 +197,7 @@ e_scrollframe.c \ e_file_selector.c \ e_file_dialog.c \ +e_int_border_menu.c \ $(ENLIGHTENMENTHEADERS) enlightenment_SOURCES = \ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.454 retrieving revision 1.455 diff -u -3 -r1.454 -r1.455 --- e_border.c 21 Oct 2005 02:38:55 -0000 1.454 +++ e_border.c 30 Oct 2005 11:05:57 -0000 1.455 @@ -21,7 +21,6 @@ /* local subsystem functions */ static void _e_border_free(E_Border *bd); static void _e_border_del(E_Border *bd); -static void _e_border_menus_del(E_Border *bd); /* FIXME: these likely belong in a separate icccm/client handler */ /* and the border needs to become a dumb object that just does what its */ @@ -62,24 +61,6 @@ static int _e_border_shade_animator(void *data); -static void _e_border_cb_border_menu_end(void *data, E_Menu *m); -static void _e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_X_Time timestamp); -static void _e_border_menu_cb_close(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_iconify(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_kill(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_maximize(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_on_top(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_normal(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_below(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_borderless(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_fullscreen(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_skip_winlist(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_sendto_pre(void *data, E_Menu *m, E_Menu_Item *mi); -static void _e_border_menu_cb_sendto(void *data, E_Menu *m, E_Menu_Item *mi); - static void _e_border_event_border_add_free(void *data, void *ev); static void _e_border_event_border_remove_free(void *data, void *ev); static void _e_border_event_border_zone_set_free(void *data, void *ev); @@ -2042,17 +2023,17 @@ E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE); if (ev) { - _e_border_menu_show(bd, - bd->x + ev->x - bd->zone->container->x, - bd->y + ev->y - bd->zone->container->y, key, - ev->time); + e_int_border_menu_show(bd, + bd->x + ev->x - bd->zone->container->x, + bd->y + ev->y - bd->zone->container->y, key, + ev->time); } else { int x, y; ecore_x_pointer_xy_get(bd->zone->container->win, &x, &y); - _e_border_menu_show(bd, x, y, key, 0); + e_int_border_menu_show(bd, x, y, key, 0); } } @@ -2595,7 +2576,7 @@ bd->border_remember_dialog = NULL; } - _e_border_menus_del(bd); + e_int_border_menu_del(bd); if (focused == bd) { @@ -2701,8 +2682,9 @@ e_object_del(E_OBJECT(bd->border_remember_dialog)); bd->border_remember_dialog = NULL; } + + e_int_border_menu_del(bd); - _e_border_menus_del(bd); if (bd->raise_timer) { ecore_timer_del(bd->raise_timer); @@ -2776,28 +2758,6 @@ } } -static void -_e_border_menus_del(E_Border *bd) -{ - int was_menu = 0; - - if (bd->border_stacking_menu) - { - e_object_del(E_OBJECT(bd->border_stacking_menu)); - bd->border_stacking_menu = NULL; - was_menu = 1; - } - if (bd->border_menu) - { - e_object_del(E_OBJECT(bd->border_menu)); - bd->border_menu = NULL; - was_menu = 1; - } - if (was_menu) - { - } -} - static int _e_border_cb_window_show_request(void *data, int ev_type, void *ev) { @@ -5716,529 +5676,6 @@ } static void -_e_border_cb_border_menu_end(void *data, E_Menu *m) -{ - E_Border *bd; - - bd = e_object_data_get(E_OBJECT(m)); - if (bd) - { - /* If the border exists, delete all associated menus */ - _e_border_menus_del(bd); - } - else - { - /* Just delete this menu */ - e_object_del(E_OBJECT(m)); - } -} - -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_cb_remember(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - bd = data; - if (bd->border_remember_dialog) return; - e_int_border_remember(bd); -} - -static void -_e_border_menu_show(E_Border *bd, Evas_Coord x, Evas_Coord y, int key, Ecore_X_Time timestamp) -{ - E_Menu *m; - E_Menu_Item *mi; - - if (bd->border_menu) return; - - m = e_menu_new(); - bd->border_stacking_menu = m; - /* Only allow to change layer for windows in "normal" layers */ - if ((!bd->lock_user_stacking) && - ((bd->layer == 50) || (bd->layer == 100) || (bd->layer == 150))) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Always On Top")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - e_menu_item_toggle_set(mi, (bd->layer == 150 ? 1 : 0)); - e_menu_item_callback_set(mi, _e_border_menu_cb_on_top, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/stack_on_top"), - "widgets/border/default/stack_on_top"); - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Normal")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - e_menu_item_toggle_set(mi, (bd->layer == 100 ? 1 : 0)); - e_menu_item_callback_set(mi, _e_border_menu_cb_normal, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/stack_normal"), - "widgets/border/default/stack_normal"); - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Always Below")); - e_menu_item_radio_set(mi, 1); - e_menu_item_radio_group_set(mi, 2); - e_menu_item_toggle_set(mi, (bd->layer == 50 ? 1 : 0)); - e_menu_item_callback_set(mi, _e_border_menu_cb_below, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/stack_below"), - "widgets/border/default/stack_below"); - } - - m = e_menu_new(); - e_object_data_set(E_OBJECT(m), bd); - bd->border_menu = m; - e_menu_post_deactivate_callback_set(m, _e_border_cb_border_menu_end, NULL); - - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Window Locks")); - e_menu_item_callback_set(mi, _e_border_menu_cb_locks, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/locks"), - "widgets/border/default/locks"); - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Remember")); - 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"), - "widgets/border/default/remember"); - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Send to Desktop")); - e_menu_item_submenu_pre_callback_set(mi, _e_border_menu_cb_sendto_pre, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/sendto"), - "widgets/border/default/sendto"); - - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Stacking")); - e_menu_item_submenu_set(mi, bd->border_stacking_menu); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/stacking"), - "widgets/border/default/stacking"); - - if ((!bd->lock_user_shade) && (!(!strcmp("borderless", bd->client.border.name)))) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Shaded")); - e_menu_item_check_set(mi, 1); - e_menu_item_toggle_set(mi, (bd->shaded ? 1 : 0)); - e_menu_item_callback_set(mi, _e_border_menu_cb_shade, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/shade"), - "widgets/border/default/shade"); - } - - if (!bd->lock_user_maximize) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Maximized")); - e_menu_item_check_set(mi, 1); - e_menu_item_toggle_set(mi, (bd->maximized ? 1 : 0)); - e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/maximize"), - "widgets/border/default/maximize"); - } - - if (!bd->lock_user_sticky) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Sticky")); - e_menu_item_check_set(mi, 1); - e_menu_item_toggle_set(mi, (bd->sticky ? 1 : 0)); - e_menu_item_callback_set(mi, _e_border_menu_cb_stick, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/stick"), - "widgets/border/default/stick"); - } - - if ((!bd->shaded) && (!bd->fullscreen) && (!bd->lock_border)) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Borderless")); - e_menu_item_check_set(mi, 1); - e_menu_item_toggle_set(mi, !strcmp("borderless", bd->client.border.name)); - e_menu_item_callback_set(mi, _e_border_menu_cb_borderless, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/borderless"), - "widgets/border/default/borderless"); - } - - if (!bd->lock_user_fullscreen) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Fullscreen")); - e_menu_item_check_set(mi, 1); - e_menu_item_toggle_set(mi, bd->fullscreen); - e_menu_item_callback_set(mi, _e_border_menu_cb_fullscreen, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/fullscreen"), - "widgets/border/default/fullscreen"); - } - - if ((bd->client.icccm.accepts_focus || bd->client.icccm.take_focus) && - (!bd->client.netwm.state.skip_taskbar)) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Skip Window List")); - e_menu_item_check_set(mi, 1); - e_menu_item_toggle_set(mi, bd->user_skip_winlist); - e_menu_item_callback_set(mi, _e_border_menu_cb_skip_winlist, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/skip_winlist"), - "widgets/border/default/skip_winlist"); - } - - if (ecore_file_app_installed("e_util_eapp_edit")) - { - char *title = ""; - - if (bd->client.netwm.name) title = bd->client.netwm.name; - else title = bd->client.icccm.title; - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - if (bd->app) - { - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Edit Icon")); - e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, bd->app->path); - e_menu_item_icon_edje_set(mi, bd->app->path, "icon"); - } - else if (bd->client.icccm.class) /* icons with no class useless to borders */ - { - static char buf[PATH_MAX + 50]; - char *name, *homedir; - int i, l; - - buf[0] = '\0'; - /* generate a reasonable file name from the window class */ - /* FIXME - I think there could be duplicates - how better to do this? */ - name = strdup(bd->client.icccm.class); - l = strlen(name); - for (i = 0; i < l; i++) - { - if (name[i] == ' ') name[i] = '_'; - } - /* previously this could be null, but it will exist now */ - homedir = e_user_homedir_get(); - - snprintf(buf, sizeof(buf), - "--win-class \"%s\" %s/.e/e/applications/all/%s.eap", - bd->client.icccm.class, homedir, name); - free(homedir); - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Create Icon")); - e_menu_item_callback_set(mi, _e_border_menu_cb_icon_edit, buf); - } - } - - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - - if ((!bd->lock_close) && (!bd->internal)) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Kill")); - e_menu_item_callback_set(mi, _e_border_menu_cb_kill, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/kill"), - "widgets/border/default/kill"); - mi = e_menu_item_new(m); - e_menu_item_separator_set(mi, 1); - } - - if (!bd->lock_user_iconify) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Iconify")); - e_menu_item_callback_set(mi, _e_border_menu_cb_iconify, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/minimize"), - "widgets/border/default/minimize"); - } - - if (!bd->lock_close) - { - mi = e_menu_item_new(m); - e_menu_item_label_set(mi, _("Close")); - e_menu_item_callback_set(mi, _e_border_menu_cb_close, bd); - e_menu_item_icon_edje_set(mi, - (char *)e_theme_edje_file_get("base/theme/borders", - "widgets/border/default/close"), - "widgets/border/default/close"); - } - - if (key) - e_menu_activate_key(m, bd->zone, x, y, 1, 1, - E_MENU_POP_DIRECTION_DOWN); - else - e_menu_activate_mouse(m, bd->zone, x, y, 1, 1, - E_MENU_POP_DIRECTION_DOWN, timestamp); -} - -static void -_e_border_menu_cb_close(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - - bd = data; - if (!bd->lock_close) - e_border_act_close_begin(bd); -} - -static void -_e_border_menu_cb_iconify(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - - bd = data; - if (!bd->lock_user_iconify) - { - if (bd->iconic) e_border_uniconify(bd); - else e_border_iconify(bd); - } -} - -static void -_e_border_menu_cb_kill(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - - bd = data; - if ((!bd->lock_close) && (!bd->internal)) - e_border_act_kill_begin(bd); -} - -static void -_e_border_menu_cb_maximize(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - - bd = data; - if (!bd->lock_user_maximize) - { - if (bd->maximized) e_border_unmaximize(bd); - else e_border_maximize(bd, e_config->maximize_policy); - } -} - -static void -_e_border_menu_cb_shade(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - - bd = data; - if (!bd->lock_user_shade) - { - if (bd->shaded) e_border_unshade(bd, E_DIRECTION_UP); - else e_border_shade(bd, E_DIRECTION_UP); - } -} - -static void -_e_border_menu_cb_icon_edit(void *data, E_Menu *m, E_Menu_Item *mi) -{ - char *file; - char *command; - char *full; - Ecore_Exe *process; - - file = data; - command = "e_util_eapp_edit "; - full = malloc(strlen(file) + strlen(command) + 1); - strcpy(full, command); - strcat(full, file); - process = ecore_exe_run(full, NULL); - if (!process || !ecore_exe_pid_get(process)) - e_error_dialog_show(_("Icon Edit Error"), - _("Error starting icon editor\n\n" - "please install e_util_eapp_edit\n" - "or make sure it is in your PATH\n")); -} - -static void -_e_border_menu_cb_stick(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - - bd = data; - if (!bd->lock_user_sticky) - { - if (bd->sticky) e_border_unstick(bd); - else e_border_stick(bd); - } -} - -static void -_e_border_menu_cb_on_top(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - - bd = data; - if (bd->layer != 150) - { - e_border_layer_set(bd, 150); - e_hints_window_stacking_set(bd, E_STACKING_ABOVE); - } -} - -static void -_e_border_menu_cb_below(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - - bd = data; - if (bd->layer != 50) - { - e_border_layer_set(bd, 50); - e_hints_window_stacking_set(bd, E_STACKING_BELOW); - } -} - -static void -_e_border_menu_cb_normal(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - - bd = data; - if (bd->layer != 100) - { - e_border_layer_set(bd, 100); - e_hints_window_stacking_set(bd, E_STACKING_NONE); - } -} - -static void -_e_border_menu_cb_borderless(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - int toggle; - - bd = data; - if (!bd) return; - - if ((!bd->lock_border) && (!bd->shaded)) - { - if (bd->client.border.name) free(bd->client.border.name); - toggle = e_menu_item_toggle_get(mi); - if (toggle) - bd->client.border.name = strdup("borderless"); - else - bd->client.border.name = strdup("default"); - bd->client.border.changed = 1; - bd->changed = 1; - } -} - -static void -_e_border_menu_cb_fullscreen(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - int toggle; - - bd = data; - if (!bd) return; - - if (!bd->lock_user_fullscreen) - { - toggle = e_menu_item_toggle_get(mi); - if (toggle) - e_border_fullscreen(bd); - else - e_border_unfullscreen(bd); - } -} - -static void -_e_border_menu_cb_skip_winlist(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Border *bd; - - bd = data; - if (!bd) return; - - if ((bd->client.icccm.accepts_focus || bd->client.icccm.take_focus) && - (!bd->client.netwm.state.skip_taskbar)) - bd->user_skip_winlist = e_menu_item_toggle_get(mi); - else - bd->user_skip_winlist = 0; - if (bd->remember) e_remember_update(bd->remember, bd); -} - -static void -_e_border_menu_cb_sendto_pre(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Menu *subm; - E_Menu_Item *submi; - E_Border *bd; - int i; - - bd = data; - - subm = e_menu_new(); - e_object_data_set(E_OBJECT(subm), bd); - e_menu_item_submenu_set(mi, subm); - - for (i = 0; i < bd->zone->desk_x_count * bd->zone->desk_y_count; i++) - { - E_Desk *desk; - - desk = bd->zone->desks[i]; - submi = e_menu_item_new(subm); - e_menu_item_label_set(submi, desk->name); - e_menu_item_callback_set(submi, _e_border_menu_cb_sendto, desk); - } -} - -static void -_e_border_menu_cb_sendto(void *data, E_Menu *m, E_Menu_Item *mi) -{ - E_Desk *desk; - E_Border *bd; - - desk = data; - bd = e_object_data_get(E_OBJECT(m)); - if ((bd) && (desk)) - { - e_border_desk_set(bd, desk); - } -} - -static void _e_border_event_border_resize_free(void *data, void *ev) { E_Event_Border_Resize *e; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v retrieving revision 1.121 retrieving revision 1.122 diff -u -3 -r1.121 -r1.122 --- e_border.h 20 Oct 2005 12:49:47 -0000 1.121 +++ e_border.h 30 Oct 2005 11:05:57 -0000 1.122 @@ -135,6 +135,7 @@ struct { unsigned char changed : 1; + unsigned char user_selected : 1; char *name; } border; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_includes.h,v retrieving revision 1.57 retrieving revision 1.58 diff -u -3 -r1.57 -r1.58 --- e_includes.h 29 Oct 2005 11:51:19 -0000 1.57 +++ e_includes.h 30 Oct 2005 11:05:57 -0000 1.58 @@ -61,7 +61,6 @@ #include "e_about.h" #include "e_theme_about.h" #include "e_apps_cache.h" -#include "e_scrollbar.h" #include "e_fileman.h" #include "e_fileman_smart.h" #include "e_fileman_file.h" @@ -88,3 +87,4 @@ #include "e_file_selector.h" #include "e_file_dialog.h" #include "e_widget_fileman.h" +#include "e_int_border_menu.h" ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today * Register for a JBoss Training Course Free Certification Exam for All Training Attendees Through End of 2005 Visit http://www.jboss.com/services/certification for more information _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs