Enlightenment CVS committal Author : sebastid Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_border.c e_border.h e_hints.c e_hints.h Log Message: Cleanup always on top. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.c,v retrieving revision 1.183 retrieving revision 1.184 diff -u -3 -r1.183 -r1.184 --- e_border.c 9 May 2005 16:55:14 -0000 1.183 +++ e_border.c 10 May 2005 10:11:33 -0000 1.184 @@ -3689,7 +3689,7 @@ mi = e_menu_item_new(m); e_menu_item_label_set(mi, _("Always On Top")); e_menu_item_check_set(mi, 1); - e_menu_item_toggle_set(mi, (bd->layer == 175 ? 1 : 0)); + 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", @@ -3844,10 +3844,16 @@ E_Border *bd; bd = data; - if (bd->layer == 175) - bd->layer = 100; + if (bd->layer == 150) + { + bd->layer = 100; + e_hints_window_stacking_set(bd, E_STACKING_NONE); + } else - bd->layer = 175; + { + bd->layer = 150; + e_hints_window_stacking_set(bd, E_STACKING_ABOVE); + } e_container_window_raise(bd->zone->container, bd->win, bd->layer); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_border.h,v retrieving revision 1.45 retrieving revision 1.46 diff -u -3 -r1.45 -r1.46 --- e_border.h 8 May 2005 18:44:03 -0000 1.45 +++ e_border.h 10 May 2005 10:11:33 -0000 1.46 @@ -19,6 +19,13 @@ E_TRANSITION_DECELERATE } E_Transition; +typedef enum _E_Stacking +{ + E_STACKING_NONE, + E_STACKING_ABOVE, + E_STACKING_BELOW +} E_Stacking; + typedef struct _E_Border E_Border; typedef struct _E_Border_Pending_Move_Resize E_Border_Pending_Move_Resize; typedef struct _E_Event_Border_Resize E_Event_Border_Resize; @@ -157,7 +164,7 @@ unsigned char skip_taskbar : 1; unsigned char skip_pager : 1; unsigned char fullscreen : 1; - unsigned char stacking : 2; /* 0 = None, 1 = Above, 2 = Below */ + E_Stacking stacking; } state; Ecore_X_Window_Type type; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- e_hints.c 2 May 2005 09:19:55 -0000 1.17 +++ e_hints.c 10 May 2005 10:11:34 -0000 1.18 @@ -256,9 +256,9 @@ if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DESKTOP) bd->layer = 0; - else if (bd->client.netwm.state.stacking == 2) + else if (bd->client.netwm.state.stacking == E_STACKING_ABOVE) bd->layer = 50; - else if (bd->client.netwm.state.stacking == 1) + else if (bd->client.netwm.state.stacking == E_STACKING_BELOW) bd->layer = 150; else if (bd->client.netwm.type == ECORE_X_WINDOW_TYPE_DOCK) bd->layer = 150; @@ -306,12 +306,15 @@ switch (bd->client.netwm.state.stacking) { - case 1: + case E_STACKING_ABOVE: ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_ABOVE, 1); ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_BELOW, 0); - case 2: + break; + case E_STACKING_BELOW: ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_ABOVE, 0); ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_BELOW, 1); + break; + case E_STACKING_NONE: default: ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_ABOVE, 0); ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_BELOW, 0); @@ -615,28 +618,28 @@ switch (action) { case ECORE_X_WINDOW_STATE_ACTION_REMOVE: - if (bd->client.netwm.state.stacking == 1) + if (bd->client.netwm.state.stacking == E_STACKING_ABOVE) { - bd->client.netwm.state.stacking = 0; + bd->client.netwm.state.stacking = E_STACKING_NONE; changed = 1; } break; case ECORE_X_WINDOW_STATE_ACTION_ADD: - if (bd->client.netwm.state.stacking == 0) + if (bd->client.netwm.state.stacking == E_STACKING_NONE) { - bd->client.netwm.state.stacking = 1; + bd->client.netwm.state.stacking = E_STACKING_ABOVE; changed = 1; } break; case ECORE_X_WINDOW_STATE_ACTION_TOGGLE: - if (bd->client.netwm.state.stacking == 1) + if (bd->client.netwm.state.stacking == E_STACKING_ABOVE) { - bd->client.netwm.state.stacking = 0; + bd->client.netwm.state.stacking = E_STACKING_NONE; changed = 1; } - else if (bd->client.netwm.state.stacking == 0) + else if (bd->client.netwm.state.stacking == E_STACKING_NONE) { - bd->client.netwm.state.stacking = 1; + bd->client.netwm.state.stacking = E_STACKING_ABOVE; changed = 1; } break; @@ -658,28 +661,28 @@ switch (action) { case ECORE_X_WINDOW_STATE_ACTION_REMOVE: - if (bd->client.netwm.state.stacking == 2) + if (bd->client.netwm.state.stacking == E_STACKING_BELOW) { - bd->client.netwm.state.stacking = 0; + bd->client.netwm.state.stacking = E_STACKING_NONE; changed = 1; } break; case ECORE_X_WINDOW_STATE_ACTION_ADD: - if (bd->client.netwm.state.stacking == 0) + if (bd->client.netwm.state.stacking == E_STACKING_NONE) { - bd->client.netwm.state.stacking = 2; + bd->client.netwm.state.stacking = E_STACKING_BELOW; changed = 1; } break; case ECORE_X_WINDOW_STATE_ACTION_TOGGLE: - if (bd->client.netwm.state.stacking == 2) + if (bd->client.netwm.state.stacking == E_STACKING_BELOW) { - bd->client.netwm.state.stacking = 0; + bd->client.netwm.state.stacking = E_STACKING_NONE; changed = 1; } - else if (bd->client.netwm.state.stacking == 0) + else if (bd->client.netwm.state.stacking == E_STACKING_NONE) { - bd->client.netwm.state.stacking = 2; + bd->client.netwm.state.stacking = E_STACKING_BELOW; changed = 1; } break; @@ -858,7 +861,6 @@ void e_hints_window_sticky_set(E_Border *bd, int on) { - ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_STICKY, on); if ((!bd->client.netwm.state.sticky) && (on)) { ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_STICKY, 1); @@ -871,6 +873,29 @@ } } +void +e_hints_window_stacking_set(E_Border *bd, E_Stacking stacking) +{ + if (bd->client.netwm.state.stacking == stacking) return; + switch (stacking) + { + case E_STACKING_ABOVE: + ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_ABOVE, 1); + ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_BELOW, 0); + break; + case E_STACKING_BELOW: + ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_ABOVE, 0); + ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_BELOW, 1); + break; + case E_STACKING_NONE: + default: + ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_ABOVE, 0); + ecore_x_netwm_window_state_set(bd->client.win, ECORE_X_WINDOW_STATE_BELOW, 0); + break; + } + bd->client.netwm.state.stacking = stacking; +} + /* ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_MODAL, on); ecore_x_netwm_window_state_set(win, ECORE_X_WINDOW_STATE_SKIP_TASKBAR, on); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_hints.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- e_hints.h 2 May 2005 09:19:55 -0000 1.11 +++ e_hints.h 10 May 2005 10:11:34 -0000 1.12 @@ -35,8 +35,9 @@ EAPI void e_hints_window_shaded_set(E_Border *bd, int on); EAPI void e_hints_window_maximized_set(E_Border *bd, int on); -EAPI void e_hints_window_sticky_set(E_Border *bd, int on); EAPI void e_hints_window_fullscreen_set(E_Border *bd, int on); +EAPI void e_hints_window_sticky_set(E_Border *bd, int on); +EAPI void e_hints_window_stacking_set(E_Border *bd, E_Stacking stacking); EAPI void e_hints_window_icon_name_get(E_Border *bd); ------------------------------------------------------- This SF.Net email is sponsored by Oracle Space Sweepstakes Want to be the first software developer in space? Enter now for the Oracle Space Sweepstakes! http://ads.osdn.com/?ad_id=7393&alloc_id=16281&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs