From f4d19e6b580d8515ce7a25e6228a1b0518a1cd57 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Mon, 24 Feb 2003 20:41:08 +0000 Subject: [PATCH] Added checks when editing window and sb size so that they are kept consistent. --- programs/wineconsole/dialog.c | 43 ++++++++++++++++++-------- programs/wineconsole/wineconsole_De.rc | 6 ++-- programs/wineconsole/wineconsole_En.rc | 6 ++-- programs/wineconsole/wineconsole_Fr.rc | 6 ++-- programs/wineconsole/wineconsole_Hu.rc | 6 ++-- programs/wineconsole/wineconsole_Zh.rc | 6 ++-- programs/wineconsole/wineconsole_res.h | 3 ++ 7 files changed, 53 insertions(+), 23 deletions(-) diff --git a/programs/wineconsole/dialog.c b/programs/wineconsole/dialog.c index ab7333c69e3..7b341880333 100644 --- a/programs/wineconsole/dialog.c +++ b/programs/wineconsole/dialog.c @@ -611,7 +611,6 @@ static BOOL WINAPI WCUSER_ConfigDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPAR 0, (LPARAM)s2); SendDlgItemMessage(hDlg, IDC_CNF_EDITION_MODE, CB_SETCURSEL, di->config.edition_mode, 0); - WINE_FIXME("edmo=%d\n", di->config.edition_mode); } break; @@ -624,7 +623,7 @@ static BOOL WINAPI WCUSER_ConfigDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPAR case WM_NOTIFY: { NMHDR* nmhdr = (NMHDR*)lParam; - int x, y; + int win_w, win_h, sb_w, sb_h; BOOL st1, st2; di = (struct dialog_info*)GetWindowLong(hDlg, DWL_USER); @@ -634,21 +633,39 @@ static BOOL WINAPI WCUSER_ConfigDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPAR di->hDlg = hDlg; break; case PSN_APPLY: - x = GetDlgItemInt(hDlg, IDC_CNF_SB_WIDTH, &st1, FALSE); - y = GetDlgItemInt(hDlg, IDC_CNF_SB_HEIGHT, &st2, FALSE); - if (st1 && st2) + sb_w = GetDlgItemInt(hDlg, IDC_CNF_SB_WIDTH, &st1, FALSE); + sb_h = GetDlgItemInt(hDlg, IDC_CNF_SB_HEIGHT, &st2, FALSE); + if (!st1 || ! st2) { - di->config.sb_width = x; - di->config.sb_height = y; + SetWindowLong(hDlg, DWL_MSGRESULT, PSNRET_INVALID); + return TRUE; } + win_w = GetDlgItemInt(hDlg, IDC_CNF_WIN_WIDTH, &st1, FALSE); + win_h = GetDlgItemInt(hDlg, IDC_CNF_WIN_HEIGHT, &st2, FALSE); + if (!st1 || !st2) + { + SetWindowLong(hDlg, DWL_MSGRESULT, PSNRET_INVALID); + return TRUE; + } + if (win_w > sb_w || win_h > sb_h) + { + WCHAR cap[256]; + WCHAR txt[256]; - x = GetDlgItemInt(hDlg, IDC_CNF_WIN_WIDTH, &st1, FALSE); - y = GetDlgItemInt(hDlg, IDC_CNF_WIN_HEIGHT, &st2, FALSE); - if (st1 && st2) - { - di->config.win_width = x; - di->config.win_height = y; + LoadString(GetModuleHandle(NULL), IDS_DLG_TIT_ERROR, + cap, sizeof(cap) / sizeof(WCHAR)); + LoadString(GetModuleHandle(NULL), IDS_DLG_ERR_SBWINSIZE, + txt, sizeof(txt) / sizeof(WCHAR)); + + MessageBox(hDlg, txt, cap, MB_OK); + SetWindowLong(hDlg, DWL_MSGRESULT, PSNRET_INVALID); + return TRUE; } + di->config.win_width = win_w; + di->config.win_height = win_h; + di->config.sb_width = sb_w; + di->config.sb_height = sb_h; + di->config.exit_on_die = IsDlgButtonChecked(hDlg, IDC_CNF_CLOSE_EXIT) ? 1 : 0; di->config.edition_mode = SendDlgItemMessage(hDlg, IDC_CNF_EDITION_MODE, CB_GETCURSEL, 0, 0); diff --git a/programs/wineconsole/wineconsole_De.rc b/programs/wineconsole/wineconsole_De.rc index 5a16dabe2aa..98262c4c214 100644 --- a/programs/wineconsole/wineconsole_De.rc +++ b/programs/wineconsole/wineconsole_De.rc @@ -32,8 +32,10 @@ IDS_SEARCH, "&Suchen" IDS_FNT_DISPLAY, "Jeder Buchstabe ist %ld Pixel breit und %ld Pixel hoch" IDS_FNT_PREVIEW_1, "Dies ist ein Test" IDS_FNT_PREVIEW_2, "" -IDS_DLG_TIT_DEFAULT "Setup - Standardeinstellungen" -IDS_DLG_TIT_CURRENT "Setup - aktuelle Einstellungen" +IDS_DLG_TIT_DEFAULT, "Setup - Standardeinstellungen" +IDS_DLG_TIT_CURRENT, "Setup - aktuelle Einstellungen" +IDS_DLG_TIT_ERROR, "Configuration error" +IDS_DLG_ERR_SBWINSIZE, "Screen buffer size must be greater or equal to the window's one" END IDD_OPTION DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 140, 105 diff --git a/programs/wineconsole/wineconsole_En.rc b/programs/wineconsole/wineconsole_En.rc index 453bf9998e3..c593f728a1c 100644 --- a/programs/wineconsole/wineconsole_En.rc +++ b/programs/wineconsole/wineconsole_En.rc @@ -32,8 +32,10 @@ IDS_SEARCH, "S&earch" IDS_FNT_DISPLAY, "Each character is %ld pixels wide on %ld pixels high" IDS_FNT_PREVIEW_1, "This is a test" IDS_FNT_PREVIEW_2, "" -IDS_DLG_TIT_DEFAULT "Setup - Default settings" -IDS_DLG_TIT_CURRENT "Setup - Current settings" +IDS_DLG_TIT_DEFAULT, "Setup - Default settings" +IDS_DLG_TIT_CURRENT, "Setup - Current settings" +IDS_DLG_TIT_ERROR, "Configuration error" +IDS_DLG_ERR_SBWINSIZE, "Screen buffer size must be greater or equal to the window's one" END IDD_OPTION DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 140, 105 diff --git a/programs/wineconsole/wineconsole_Fr.rc b/programs/wineconsole/wineconsole_Fr.rc index 0a486cb246e..ca7ae40bf52 100644 --- a/programs/wineconsole/wineconsole_Fr.rc +++ b/programs/wineconsole/wineconsole_Fr.rc @@ -32,8 +32,10 @@ IDS_SEARCH, "C&hercher" IDS_FNT_DISPLAY, "Chaque caractère a %ld points en largeur et %ld points en hauteur" IDS_FNT_PREVIEW_1, "Ceci est un test" IDS_FNT_PREVIEW_2, "éèàôë" -IDS_DLG_TIT_DEFAULT "Configuration par défault" -IDS_DLG_TIT_CURRENT "Configuration courante" +IDS_DLG_TIT_DEFAULT, "Configuration par défault" +IDS_DLG_TIT_CURRENT, "Configuration courante" +IDS_DLG_TIT_ERROR, "Erreur de configuration" +IDS_DLG_ERR_SBWINSIZE, "La taille du tampon écran doit être plus grande que celle de la fenêtre" END IDD_OPTION DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 140, 105 diff --git a/programs/wineconsole/wineconsole_Hu.rc b/programs/wineconsole/wineconsole_Hu.rc index 8a22ccd80de..3186a22da99 100644 --- a/programs/wineconsole/wineconsole_Hu.rc +++ b/programs/wineconsole/wineconsole_Hu.rc @@ -33,8 +33,10 @@ IDS_SEARCH, "&Keres IDS_FNT_DISPLAY, "Minden karakter %ld pixel széles és %ld pixel magas" IDS_FNT_PREVIEW_1, "Ez egy teszt" IDS_FNT_PREVIEW_2, "" -IDS_DLG_TIT_DEFAULT "Beállítás - alapértelmezett beállítások" -IDS_DLG_TIT_CURRENT "Beállítás - aktuális beállítások" +IDS_DLG_TIT_DEFAULT, "Beállítás - alapértelmezett beállítások" +IDS_DLG_TIT_CURRENT, "Beállítás - aktuális beállítások" +IDS_DLG_TIT_ERROR, "Configuration error" +IDS_DLG_ERR_SBWINSIZE, "Screen buffer size must be greater or equal to the window's one" END IDD_OPTION DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 140, 105 diff --git a/programs/wineconsole/wineconsole_Zh.rc b/programs/wineconsole/wineconsole_Zh.rc index 3050bb9e85e..cea96262006 100644 --- a/programs/wineconsole/wineconsole_Zh.rc +++ b/programs/wineconsole/wineconsole_Zh.rc @@ -34,8 +34,10 @@ IDS_SEARCH, " IDS_FNT_DISPLAY, "ÿ¸ö×Ö¶¼ÊÇ %ld ¸öÏñËØ¿í£¬%ld ¸öÏñËظß" IDS_FNT_PREVIEW_1, "ÕâÊÇÒ»¶Î²âÊÔÓï¾ä" IDS_FNT_PREVIEW_2, "" -IDS_DLG_TIT_DEFAULT "ÅäÖà - ĬÈÏÉèÖÃ" -IDS_DLG_TIT_CURRENT "ÅäÖà - µ±Ç°ÉèÖÃ" +IDS_DLG_TIT_DEFAULT, "ÅäÖà - ĬÈÏÉèÖÃ" +IDS_DLG_TIT_CURRENT, "ÅäÖà - µ±Ç°ÉèÖÃ" +IDS_DLG_TIT_ERROR, "Configuration error" +IDS_DLG_ERR_SBWINSIZE, "Screen buffer size must be greater or equal to the window's one" END IDD_OPTION DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 140, 105 diff --git a/programs/wineconsole/wineconsole_res.h b/programs/wineconsole/wineconsole_res.h index 5d52eeee0e5..7817c7f6e34 100644 --- a/programs/wineconsole/wineconsole_res.h +++ b/programs/wineconsole/wineconsole_res.h @@ -32,6 +32,9 @@ #define IDS_DLG_TIT_DEFAULT 0x120 #define IDS_DLG_TIT_CURRENT 0x121 +#define IDS_DLG_TIT_ERROR 0x122 + +#define IDS_DLG_ERR_SBWINSIZE 0x130 #define IDS_FNT_DISPLAY 0x200 #define IDS_FNT_PREVIEW_1 0x201