Mercurial > hg > xemacs-beta
diff src/redisplay.c @ 905:c15f25529e61
[xemacs-hg @ 2002-07-06 21:05:42 by andyp]
toolbar redisplay patch
author | andyp |
---|---|
date | Sat, 06 Jul 2002 21:05:58 +0000 |
parents | 79c6ff3eef26 |
children | 37bdd24225ef |
line wrap: on
line diff
--- a/src/redisplay.c Sat Jul 06 18:56:31 2002 +0000 +++ b/src/redisplay.c Sat Jul 06 21:05:58 2002 +0000 @@ -436,6 +436,10 @@ int toolbar_changed; int toolbar_changed_set; +/* Nonzero if some frame has changed the layout of internal elements + (gutters or toolbars). */ +int frame_layout_changed; + /* non-nil if any gutter has changed */ int gutter_changed; int gutter_changed_set; @@ -6571,8 +6575,13 @@ update_frame_menubars (f); #endif /* HAVE_MENUBARS */ #ifdef HAVE_TOOLBARS - /* Update the toolbars. */ - update_frame_toolbars (f); + /* Update the toolbars geometry. We don't update the toolbars + themselves at this point since the space they are trying to + occupy may currently by occupied by gutter elements. Instead we + update the geometry, then update the gutter geometry, then update + the gutters - which will cause mapped windows to be repositioned + - and finally update the toolbars. */ + update_frame_toolbars_geometry (f); #endif /* HAVE_TOOLBARS */ /* Gutter update proper has to be done inside display when no frame size changes can occur, thus we separately update the gutter @@ -6652,6 +6661,14 @@ update_frame_title (f); +#ifdef HAVE_TOOLBARS + /* Finally update the toolbars. It seems its possible to get in a + cycle between updating the gutter and the toolbars. Basically we + want to end up with both being up-to-date and this doesn't seem + possible in a single pass. */ + update_frame_toolbars (f); +#endif /* HAVE_TOOLBARS */ + CLASS_RESET_CHANGED_FLAGS (f); f->window_face_cache_reset = 0; f->echo_area_garbaged = 0;