server: Fix moving cursor in or scrolling inactive console buffer
messing up console window
Dmitry Groshev
wjaguar at in-trans.ru
Tue Jul 24 16:48:48 CDT 2007
---
server/console.c | 30 ++++++++++++++++++------------
1 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/server/console.c b/server/console.c
index 88a24e8..df88e37 100644
--- a/server/console.c
+++ b/server/console.c
@@ -909,12 +909,15 @@ static int set_console_output_info( stru
screen_buffer->win.top = req->win_top;
screen_buffer->win.right = req->win_right;
screen_buffer->win.bottom = req->win_bottom;
- evt.event = CONSOLE_RENDERER_DISPLAY_EVENT;
- evt.u.display.left = req->win_left;
- evt.u.display.top = req->win_top;
- evt.u.display.width = req->win_right - req->win_left + 1;
- evt.u.display.height = req->win_bottom - req->win_top + 1;
- console_input_events_append( screen_buffer->input->evt, &evt );
+ if (screen_buffer == screen_buffer->input->active)
+ {
+ evt.event = CONSOLE_RENDERER_DISPLAY_EVENT;
+ evt.u.display.left = req->win_left;
+ evt.u.display.top = req->win_top;
+ evt.u.display.width = req->win_right - req->win_left + 1;
+ evt.u.display.height = req->win_bottom - req->win_top + 1;
+ console_input_events_append( screen_buffer->input->evt, &evt );
+ }
}
}
if (req->mask & SET_CONSOLE_OUTPUT_INFO_MAX_SIZE)
@@ -1275,12 +1278,15 @@ static void scroll_console_output( obj_h
}
}
- /* FIXME: this could be enhanced, by signalling scroll */
- evt.event = CONSOLE_RENDERER_UPDATE_EVENT;
- memset(&evt.u, 0, sizeof(evt.u));
- evt.u.update.top = min(ysrc, ydst);
- evt.u.update.bottom = max(ysrc, ydst) + h - 1;
- console_input_events_append( screen_buffer->input->evt, &evt );
+ if (screen_buffer == screen_buffer->input->active)
+ {
+ /* FIXME: this could be enhanced, by signalling scroll */
+ evt.event = CONSOLE_RENDERER_UPDATE_EVENT;
+ memset(&evt.u, 0, sizeof(evt.u));
+ evt.u.update.top = min(ysrc, ydst);
+ evt.u.update.bottom = max(ysrc, ydst) + h - 1;
+ console_input_events_append( screen_buffer->input->evt, &evt );
+ }
release_object( screen_buffer );
}
--
1.4.2.1
-------------- next part --------------
>From d972be934b78d4e90e56ef147c0e5dcb6572d819 Mon Sep 17 00:00:00 2001
From: Dmitry Groshev <wjaguar at in-trans.ru>
Date: Wed, 25 Jul 2007 01:33:20 +0400
Subject: server: Fix moving cursor or scrolling inactive console buffer messing up console window
---
server/console.c | 30 ++++++++++++++++++------------
1 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/server/console.c b/server/console.c
index 88a24e8..df88e37 100644
--- a/server/console.c
+++ b/server/console.c
@@ -909,12 +909,15 @@ static int set_console_output_info( stru
screen_buffer->win.top = req->win_top;
screen_buffer->win.right = req->win_right;
screen_buffer->win.bottom = req->win_bottom;
- evt.event = CONSOLE_RENDERER_DISPLAY_EVENT;
- evt.u.display.left = req->win_left;
- evt.u.display.top = req->win_top;
- evt.u.display.width = req->win_right - req->win_left + 1;
- evt.u.display.height = req->win_bottom - req->win_top + 1;
- console_input_events_append( screen_buffer->input->evt, &evt );
+ if (screen_buffer == screen_buffer->input->active)
+ {
+ evt.event = CONSOLE_RENDERER_DISPLAY_EVENT;
+ evt.u.display.left = req->win_left;
+ evt.u.display.top = req->win_top;
+ evt.u.display.width = req->win_right - req->win_left + 1;
+ evt.u.display.height = req->win_bottom - req->win_top + 1;
+ console_input_events_append( screen_buffer->input->evt, &evt );
+ }
}
}
if (req->mask & SET_CONSOLE_OUTPUT_INFO_MAX_SIZE)
@@ -1275,12 +1278,15 @@ static void scroll_console_output( obj_h
}
}
- /* FIXME: this could be enhanced, by signalling scroll */
- evt.event = CONSOLE_RENDERER_UPDATE_EVENT;
- memset(&evt.u, 0, sizeof(evt.u));
- evt.u.update.top = min(ysrc, ydst);
- evt.u.update.bottom = max(ysrc, ydst) + h - 1;
- console_input_events_append( screen_buffer->input->evt, &evt );
+ if (screen_buffer == screen_buffer->input->active)
+ {
+ /* FIXME: this could be enhanced, by signalling scroll */
+ evt.event = CONSOLE_RENDERER_UPDATE_EVENT;
+ memset(&evt.u, 0, sizeof(evt.u));
+ evt.u.update.top = min(ysrc, ydst);
+ evt.u.update.bottom = max(ysrc, ydst) + h - 1;
+ console_input_events_append( screen_buffer->input->evt, &evt );
+ }
release_object( screen_buffer );
}
--
1.4.2.1
More information about the wine-patches
mailing list