Enlightenment CVS committal Author : dj2 Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_border.h e_desk.c e_hints.c Log Message: - add the sticky window code =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.50 retrieving revision 1.51 diff -u -3 -r1.50 -r1.51 --- e_border.c 7 Jan 2005 20:29:45 -0000 1.50 +++ e_border.c 8 Jan 2005 07:09:58 -0000 1.51 @@ -68,6 +68,7 @@ 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); /* local subsystem globals */ static Evas_List *handlers = NULL; @@ -656,6 +657,21 @@ } } +void +e_border_stick(E_Border *bd) +{ + E_OBJECT_CHECK(bd); + bd->sticky = 1; +} + +void +e_border_unstick(E_Border *bd) +{ + E_OBJECT_CHECK(bd); + bd->sticky = 0; + bd->desk = e_desk_current_get(bd->zone); +} + E_Border * e_border_find_by_client_window(Ecore_X_Window win) { @@ -2484,6 +2500,13 @@ e_menu_item_callback_set(mi, _e_border_menu_cb_maximize, bd); mi = e_menu_item_new(m); + if (bd->sticky) + e_menu_item_label_set(mi, "Un-Stick"); + else + e_menu_item_label_set(mi, "Stick"); + e_menu_item_callback_set(mi, _e_border_menu_cb_stick, bd); + + mi = e_menu_item_new(m); e_menu_item_separator_set(mi, 1); a = e_app_window_name_class_find(bd->client.icccm.name, @@ -2593,3 +2616,13 @@ 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->sticky) e_border_unstick(bd); + else e_border_stick(bd); +} =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- e_border.h 5 Jan 2005 10:37:53 -0000 1.15 +++ e_border.h 8 Jan 2005 07:10:13 -0000 1.16 @@ -149,6 +149,7 @@ unsigned char shaded : 1; unsigned char maximized : 1; unsigned char iconic : 1; + unsigned char sticky : 1; unsigned char changed : 1; @@ -206,7 +207,9 @@ EAPI void e_border_unmaximize(E_Border *bd); EAPI void e_border_iconify(E_Border *bd); EAPI void e_border_uniconify(E_Border *bd); - +EAPI void e_border_stick(E_Border *bd); +EAPI void e_border_unstick(E_Border *bd); + EAPI E_Border *e_border_find_by_client_window(Ecore_X_Window win); EAPI void e_border_idler_before(void); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_desk.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- e_desk.c 5 Jan 2005 10:37:53 -0000 1.9 +++ e_desk.c 8 Jan 2005 07:10:13 -0000 1.10 @@ -69,7 +69,7 @@ if (bd->desk->zone == desk->zone && !bd->iconic) { - if (bd->desk == desk) + if (bd->desk == desk || bd->sticky) { e_border_show(bd); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- e_hints.c 3 Jan 2005 09:34:24 -0000 1.5 +++ e_hints.c 8 Jan 2005 07:10:13 -0000 1.6 @@ -225,7 +225,7 @@ ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MODAL, bd->client.netwm.state.modal); ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_STICKY, - (evas_list_count(bd->stick_desks) > 1)); + bd->sticky); ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MAXIMIZED_VERT, bd->client.netwm.state.maximized_v); ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ, ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs