diff --git a/src/bin/e_border.h b/src/bin/e_border.h index 64109a59c..465c894b1 100644 --- a/src/bin/e_border.h +++ b/src/bin/e_border.h @@ -278,6 +278,7 @@ struct _E_Border unsigned int need_shape_merge : 1; unsigned int need_shape_export : 1; unsigned int fullscreen : 1; + unsigned int want_fullscreen : 1; unsigned int already_unparented : 1; unsigned int need_reparent : 1; unsigned int button_grabbed : 1; diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c index 4a8173593..ee5b5f4d3 100644 --- a/src/bin/e_desk.c +++ b/src/bin/e_desk.c @@ -87,11 +87,25 @@ e_desk_show(E_Desk *desk) if ((bd->desk->zone == desk->zone) && (!bd->iconic)) { if ((bd->desk == desk) || (bd->sticky)) - e_border_show(bd); + { + e_border_show(bd); + if (bd->want_fullscreen) + { + e_border_fullscreen(bd); + bd->want_fullscreen = 0; + } + } else if (bd->moving) e_border_desk_set(bd, desk); else - e_border_hide(bd, 1); + { + /* We have to remember that this border wants to become + * fullscreen when we go back to this desk. + */ + if (bd->fullscreen) + bd->want_fullscreen = 1; + e_border_hide(bd, 1); + } } } e_container_border_list_free(bl);