summaryrefslogtreecommitdiff
path: root/src/dispnew.c
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1995-02-17 08:40:18 +0000
committerRichard M. Stallman <rms@gnu.org>1995-02-17 08:40:18 +0000
commit02b346c74ffe860dcccb754c983d7b107bc18830 (patch)
treef024c93886da28934f7ddd42c4c68534168bb2aa /src/dispnew.c
parent567c11742a144c4e33dccbabe3158efc2ec550fa (diff)
downloademacs-02b346c74ffe860dcccb754c983d7b107bc18830.tar.gz
(change_frame_size_1): New subroutine.
(change_frame_size): If f is termcap frame, change size of all of them. (remake_frame_glyphs): No longer static. Don't mark nonselected termcap frame as garbaged.
Diffstat (limited to 'src/dispnew.c')
-rw-r--r--src/dispnew.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/dispnew.c b/src/dispnew.c
index 3fbc9f55f8d..ee29b302ac4 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -72,6 +72,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#endif
#endif
+static void change_frame_size_1 ();
+
/* Nonzero upon entry to redisplay means do not assume anything about
current contents of actual terminal frame; clear and redraw it. */
@@ -352,7 +354,7 @@ free_frame_glyphs (frame, glyphs)
xfree (glyphs);
}
-static void
+void
remake_frame_glyphs (frame)
FRAME_PTR frame;
{
@@ -385,7 +387,8 @@ remake_frame_glyphs (frame)
FRAME_CURRENT_GLYPHS (frame) = make_frame_glyphs (frame, 0);
FRAME_DESIRED_GLYPHS (frame) = make_frame_glyphs (frame, 0);
FRAME_TEMP_GLYPHS (frame) = make_frame_glyphs (frame, 1);
- SET_FRAME_GARBAGED (frame);
+ if (! FRAME_TERMCAP_P (frame) || frame == selected_frame)
+ SET_FRAME_GARBAGED (frame);
}
/* Return the hash code of contents of line VPOS in frame-matrix M. */
@@ -2027,7 +2030,26 @@ do_pending_window_change ()
redisplay. Since this tries to resize windows, we can't call it
from a signal handler. */
-change_frame_size (frame, newheight, newwidth, pretend, delay)
+change_frame_size (f, newheight, newwidth, pretend, delay)
+ register FRAME_PTR f;
+ int newheight, newwidth, pretend;
+{
+ Lisp_Object tail, frame;
+ if (FRAME_TERMCAP_P (f))
+ {
+ /* When using termcap, all frames use the same screen,
+ so a change in size affects all termcap frames. */
+ FOR_EACH_FRAME (tail, frame)
+ if (FRAME_TERMCAP_P (XFRAME (frame)))
+ change_frame_size_1 (XFRAME (frame), newheight, newwidth,
+ pretend, delay);
+ }
+ else
+ change_frame_size_1 (f, newheight, newwidth, pretend, delay);
+}
+
+static void
+change_frame_size_1 (frame, newheight, newwidth, pretend, delay)
register FRAME_PTR frame;
int newheight, newwidth, pretend;
{