Module: wine Branch: master Commit: a3583f05055b5093a3a8822b73fb24281ae62d27 URL: https://source.winehq.org/git/wine.git/?a=commit;h=a3583f05055b5093a3a8822b7...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Oct 12 18:26:23 2020 +0200
conhost: Support window resizing.
Based on wineconsole.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
programs/conhost/window.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)
diff --git a/programs/conhost/window.c b/programs/conhost/window.c index 8ab639f329..4b3751e7b5 100644 --- a/programs/conhost/window.c +++ b/programs/conhost/window.c @@ -2062,6 +2062,29 @@ static BOOL config_dialog( struct console *console, BOOL current ) return TRUE; }
+static void resize_window( struct console *console, int width, int height ) +{ + struct console_config config; + + current_config( console, &config ); + config.win_width = width; + config.win_height = height; + + /* auto size screen-buffer if it's now smaller than window */ + if (config.sb_width < config.win_width) + config.sb_width = config.win_width; + if (config.sb_height < config.win_height) + config.sb_height = config.win_height; + + /* and reset window pos so that we don't display outside of the screen-buffer */ + if (config.win_pos.X + config.win_width > config.sb_width) + config.win_pos.X = config.sb_width - config.win_width; + if (config.win_pos.Y + config.win_height > config.sb_height) + config.win_pos.Y = config.sb_height - config.win_height; + + apply_config( console, &config ); +} + /* grays / ungrays the menu items according to their state */ static void set_menu_details( struct console *console, HMENU menu ) { @@ -2280,6 +2303,13 @@ static LRESULT WINAPI window_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lp DestroyCaret(); break;
+ case WM_SIZE: + if (console->window->update_state != UPDATE_BUSY) + resize_window( console, + max( LOWORD(lparam) / console->active->font.width, 20 ), + max( HIWORD(lparam) / console->active->font.height, 20 )); + break; + case WM_SYSCOMMAND: switch (wparam) {