From 5bba14dc9e744df41979c48c1e6fe4372790287c Mon Sep 17 00:00:00 2001 From: Andriy Palamarchuk Date: Tue, 15 Jan 2002 20:43:43 +0000 Subject: [PATCH] Implemented processing of actions SPI_SETKEYBOARDPREF, SPI_SETSCREENREADER. Save to registry value of SPI_SETSCREENSAVEACTIVE action. Changed processing of action SPI_SETFASTTASKSWITCH to conform to Windows behaviour on and after WinNT 4.0, Windows 95. --- windows/sysparams.c | 128 +++++++++++++++++++++++++++++--------------- 1 file changed, 85 insertions(+), 43 deletions(-) diff --git a/windows/sysparams.c b/windows/sysparams.c index 80b991ebe17..c890e0aca18 100644 --- a/windows/sysparams.c +++ b/windows/sysparams.c @@ -40,11 +40,12 @@ DEFAULT_DEBUG_CHANNEL(system); #define SPI_SETDOUBLECLKHEIGHT_IDX 12 #define SPI_SETDOUBLECLICKTIME_IDX 13 #define SPI_SETMOUSEBUTTONSWAP_IDX 14 -#define SPI_SETFASTTASKSWITCH_IDX 15 -#define SPI_SETDRAGFULLWINDOWS_IDX 16 -#define SPI_SETWORKAREA_IDX 17 -#define SPI_SETSHOWSOUNDS_IDX 18 -#define SPI_SETSCREENSAVERRUNNING_IDX 19 +#define SPI_SETDRAGFULLWINDOWS_IDX 15 +#define SPI_SETWORKAREA_IDX 16 +#define SPI_SETSHOWSOUNDS_IDX 17 +#define SPI_SETKEYBOARDPREF_IDX 18 +#define SPI_SETSCREENREADER_IDX 19 +#define SPI_SETSCREENSAVERRUNNING_IDX 20 #define SPI_WINE_IDX SPI_SETSCREENSAVERRUNNING_IDX /** @@ -68,6 +69,8 @@ DEFAULT_DEBUG_CHANNEL(system); #define SPI_ICONHORIZONTALSPACING_VALNAME "IconSpacing" #define SPI_SETSCREENSAVETIMEOUT_REGKEY "Control Panel\\Desktop" #define SPI_SETSCREENSAVETIMEOUT_VALNAME "ScreenSaveTimeOut" +#define SPI_SETSCREENSAVEACTIVE_REGKEY "Control Panel\\Desktop" +#define SPI_SETSCREENSAVEACTIVE_VALNAME "ScreenSaveActive" #define SPI_SETGRIDGRANULARITY_REGKEY "Control Panel\\Desktop" #define SPI_SETGRIDGRANULARITY_VALNAME "GridGranularity" #define SPI_SETKEYBOARDDELAY_REGKEY "Control Panel\\Keyboard" @@ -86,14 +89,17 @@ DEFAULT_DEBUG_CHANNEL(system); #define SPI_SETDOUBLECLICKTIME_VALNAME "DoubleClickSpeed" #define SPI_SETMOUSEBUTTONSWAP_REGKEY "Control Panel\\Mouse" #define SPI_SETMOUSEBUTTONSWAP_VALNAME "SwapMouseButtons" -#define SPI_SETFASTTASKSWITCH_REGKEY "Control Panel\\Desktop" -#define SPI_SETFASTTASKSWITCH_VALNAME "CoolSwitch" #define SPI_SETDRAGFULLWINDOWS_REGKEY "Control Panel\\Desktop" #define SPI_SETDRAGFULLWINDOWS_VALNAME "DragFullWindows" #define SPI_SETWORKAREA_REGKEY "Control Panel\\Desktop" #define SPI_SETWORKAREA_VALNAME "WINE_WorkArea" #define SPI_SETSHOWSOUNDS_REGKEY "Control Panel\\Accessibility\\ShowSounds" #define SPI_SETSHOWSOUNDS_VALNAME "On" +/* FIXME - real values */ +#define SPI_SETKEYBOARDPREF_REGKEY "Control Panel\\Desktop" +#define SPI_SETKEYBOARDPREF_VALNAME "WINE_KeyboardPref" +#define SPI_SETSCREENREADER_REGKEY "Control Panel\\Desktop" +#define SPI_SETSCREENREADER_VALNAME "WINE_ScreenReader" #define SPI_SETSCREENSAVERRUNNING_REGKEY "Control Panel\\Desktop" #define SPI_SETSCREENSAVERRUNNING_VALNAME "WINE_ScreenSaverRunning" @@ -117,9 +123,10 @@ static int grid_granularity = 0; static int keyboard_delay = 1; static BOOL icon_title_wrap = TRUE; static int double_click_time = 500; -static BOOL fast_task_switch = TRUE; static BOOL drag_full_windows = FALSE; static RECT work_area; +static BOOL keyboard_pref = TRUE; +static BOOL screen_reader = FALSE; static BOOL screensaver_running = FALSE; /*********************************************************************** @@ -277,9 +284,10 @@ void SYSPARAMS_Reset( UINT uiAction ) WINE_INVALIDATE_SPI(SPI_SETKEYBOARDDELAY); WINE_INVALIDATE_SPI(SPI_SETICONTITLEWRAP); WINE_INVALIDATE_SPI(SPI_SETDOUBLECLICKTIME); - WINE_INVALIDATE_SPI(SPI_SETFASTTASKSWITCH); WINE_INVALIDATE_SPI(SPI_SETDRAGFULLWINDOWS); WINE_INVALIDATE_SPI(SPI_SETWORKAREA); + WINE_INVALIDATE_SPI(SPI_SETKEYBOARDPREF); + WINE_INVALIDATE_SPI(SPI_SETSCREENREADER); WINE_INVALIDATE_SPI(SPI_SETSCREENSAVERRUNNING); default: FIXME( "Unknown action reset: %u\n", uiAction ); @@ -748,6 +756,10 @@ BOOL WINAPI SystemParametersInfoA( UINT uiAction, UINT uiParam, sprintf(buf, "%u", uiParam); USER_Driver.pSetScreenSaveActive( uiParam ); + /* saved value does not affect Wine */ + SYSPARAMS_Save( SPI_SETSCREENSAVEACTIVE_REGKEY, + SPI_SETSCREENSAVEACTIVE_VALNAME, + buf, fWinIni ); break; } @@ -1050,37 +1062,13 @@ BOOL WINAPI SystemParametersInfoA( UINT uiAction, UINT uiParam, WINE_SPI_FIXME(SPI_SETICONTITLELOGFONT); /* 34 */ case SPI_GETFASTTASKSWITCH: /* 35 */ - spi_idx = SPI_SETFASTTASKSWITCH_IDX; - if (!spi_loaded[spi_idx]) - { - char buf[5]; - - if (SYSPARAMS_Load( SPI_SETFASTTASKSWITCH_REGKEY, - SPI_SETFASTTASKSWITCH_VALNAME, buf )) - fast_task_switch = atoi(buf); - spi_loaded[spi_idx] = TRUE; - } - - *(BOOL *)pvParam = fast_task_switch; + *(BOOL *)pvParam = 1; break; case SPI_SETFASTTASKSWITCH: /* 36 */ - { - char buf[5]; - - spi_idx = SPI_SETFASTTASKSWITCH_IDX; - sprintf(buf, "%u", uiParam); - if (SYSPARAMS_Save( SPI_SETFASTTASKSWITCH_REGKEY, - SPI_SETFASTTASKSWITCH_VALNAME, - buf, fWinIni )) - { - fast_task_switch = uiParam; - spi_loaded[spi_idx] = TRUE; - } - else - ret = FALSE; + /* the action is disabled */ + fWinIni = 0; break; - } case SPI_SETDRAGFULLWINDOWS: /* 37 WINVER >= 0x0400 */ { @@ -1453,17 +1441,71 @@ BOOL WINAPI SystemParametersInfoA( UINT uiAction, UINT uiParam, } WINE_SPI_FIXME(SPI_SETHIGHCONTRAST); /* 67 WINVER >= 0x400 */ - WINE_SPI_FIXME(SPI_GETKEYBOARDPREF); /* 68 WINVER >= 0x400 */ - WINE_SPI_FIXME(SPI_SETKEYBOARDPREF); /* 69 WINVER >= 0x400 */ + case SPI_GETKEYBOARDPREF: /* 68 WINVER >= 0x400 */ + spi_idx = SPI_SETKEYBOARDPREF_IDX; + if (!spi_loaded[spi_idx]) + { + char buf[5]; - case SPI_GETSCREENREADER: + if (SYSPARAMS_Load( SPI_SETKEYBOARDPREF_REGKEY, + SPI_SETKEYBOARDPREF_VALNAME, buf )) + keyboard_pref = atoi(buf); + spi_loaded[spi_idx] = TRUE; + } + + *(BOOL *)pvParam = keyboard_pref; + break; + + case SPI_SETKEYBOARDPREF: /* 69 WINVER >= 0x400 */ { - LPBOOL bool = (LPBOOL)pvParam; - *bool = FALSE; - break; + char buf[5]; + + spi_idx = SPI_SETKEYBOARDPREF_IDX; + sprintf(buf, "%u", uiParam); + if (SYSPARAMS_Save( SPI_SETKEYBOARDPREF_REGKEY, + SPI_SETKEYBOARDPREF_VALNAME, + buf, fWinIni )) + { + keyboard_pref = uiParam; + spi_loaded[spi_idx] = TRUE; + } + else + ret = FALSE; + break; } - WINE_SPI_FIXME(SPI_SETSCREENREADER); /* 71 WINVER >= 0x400 */ + case SPI_GETSCREENREADER: /* 70 WINVER >= 0x400 */ + spi_idx = SPI_SETSCREENREADER_IDX; + if (!spi_loaded[spi_idx]) + { + char buf[5]; + + if (SYSPARAMS_Load( SPI_SETSCREENREADER_REGKEY, + SPI_SETSCREENREADER_VALNAME, buf )) + screen_reader = atoi(buf); + spi_loaded[spi_idx] = TRUE; + } + + *(BOOL *)pvParam = screen_reader; + break; + + case SPI_SETSCREENREADER: /* 71 WINVER >= 0x400 */ + { + char buf[5]; + + spi_idx = SPI_SETSCREENREADER_IDX; + sprintf(buf, "%u", uiParam); + if (SYSPARAMS_Save( SPI_SETSCREENREADER_REGKEY, + SPI_SETSCREENREADER_VALNAME, + buf, fWinIni )) + { + screen_reader = uiParam; + spi_loaded[spi_idx] = TRUE; + } + else + ret = FALSE; + break; + } case SPI_GETANIMATION: /* 72 WINVER >= 0x400 */ {