diff --git a/programs/winecfg/En.rc b/programs/winecfg/En.rc index 5c1569ebcb0..888f72d8d11 100644 --- a/programs/winecfg/En.rc +++ b/programs/winecfg/En.rc @@ -62,33 +62,26 @@ IDD_X11DRVCFG DIALOG DISCARDABLE 0, 0, 260, 250 STYLE WS_CHILD | WS_DISABLED FONT 8, "MS Sans Serif" BEGIN -/** DGA control is disabled until this feature isn't totally broken **/ -/* - CONTROL "Use XFree DGA extension",IDC_XDGA,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,145,44,97,10 - */ - LTEXT "Screen color depth: ",IDC_STATIC,8,10,60,30 COMBOBOX IDC_SCREEN_DEPTH,70,8,180,70,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - - EDITTEXT IDC_DESKTOP_WIDTH,64,125,40,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED - EDITTEXT IDC_DESKTOP_HEIGHT,117,125,40,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED + + CONTROL "Can DirectX programs prevent the mouse leaving their window?",IDC_DX_MOUSE_GRAB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,35,242,8 + CONTROL "Enable desktop double buffering",IDC_DOUBLE_BUFFER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,45,242,8 + CONTROL "UseTakeFocus (FIXME)",IDC_USE_TAKE_FOCUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,55,242,8 - GROUPBOX " Window settings ",IDC_STATIC,8,65,244,170 + GROUPBOX " Window settings ",IDC_STATIC,8,25,244,120 /* FIXME: the wording of this explanation could be a lot better */ LTEXT "You can choose to emulate a windows desktop, where all the windows are confined to one 'virtual screen', or you can have the windows placed on your standard desktop.", - IDC_STATIC,15,77,228,28 - LTEXT "Desktop size:",IDC_DESKTOP_SIZE,17,125,44,8,WS_DISABLED - LTEXT "X",IDC_DESKTOP_BY,108,125,8,8,WS_DISABLED + IDC_STATIC,15,73,228,28 + LTEXT "Desktop size:",IDC_DESKTOP_SIZE,15,115,44,8,WS_DISABLED + LTEXT "X",IDC_DESKTOP_BY,108,115,8,8,WS_DISABLED CONTROL "Emulate a virtual desktop",IDC_ENABLE_DESKTOP,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,17,110,84,10 - - LTEXT "If windows are managed by your window manager, then they will have the standard borders, they will respect your virtual desktop and appear in your window list. \n\nIf the windows are unmanaged, they will be disconnected from your window manager. This will mean the windows do not integrate as closely with your desktop, but the emulation will be more accurate so it can help some programs to work better.", - IDC_STATIC,15,145,228,50 - CONTROL "Allow the window manager to control the windows", IDC_ENABLE_MANAGED, "Button", - BS_AUTOCHECKBOX | WS_TABSTOP, 17,215,154,10 - + BS_AUTOCHECKBOX | WS_TABSTOP,15,100,84,10 + + EDITTEXT IDC_DESKTOP_WIDTH,64,115,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED + EDITTEXT IDC_DESKTOP_HEIGHT,117,115,40,12,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED + END IDD_DLLCFG DIALOG DISCARDABLE 0, 0, 260, 250 diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h index e6d1b369e2a..690012372ef 100644 --- a/programs/winecfg/resource.h +++ b/programs/winecfg/resource.h @@ -104,3 +104,6 @@ #define IDS_DRIVE_NO_C 1075 #define IDC_ENABLE_MANAGED 1076 #define IDC_SCREEN_DEPTH 1077 +#define IDC_DX_MOUSE_GRAB 1078 +#define IDC_USE_TAKE_FOCUS 1079 +#define IDC_DOUBLE_BUFFER 1080 diff --git a/programs/winecfg/x11drvdlg.c b/programs/winecfg/x11drvdlg.c index 39d4b75ab6a..097946773d5 100644 --- a/programs/winecfg/x11drvdlg.c +++ b/programs/winecfg/x11drvdlg.c @@ -109,11 +109,26 @@ void initX11DrvDlg (HWND hDlg) SendDlgItemMessage(hDlg, IDC_DESKTOP_WIDTH, EM_LIMITTEXT, RES_MAXLEN, 0); SendDlgItemMessage(hDlg, IDC_DESKTOP_HEIGHT, EM_LIMITTEXT, RES_MAXLEN, 0); - buf = getConfigValue("x11drv", "Managed", "Y"); + buf = getConfigValue("x11drv", "DXGrab", "Y"); if (IS_OPTION_TRUE(*buf)) - CheckDlgButton(hDlg, IDC_ENABLE_MANAGED, BST_CHECKED); + CheckDlgButton(hDlg, IDC_DX_MOUSE_GRAB, BST_CHECKED); else - CheckDlgButton(hDlg, IDC_ENABLE_MANAGED, BST_UNCHECKED); + CheckDlgButton(hDlg, IDC_DX_MOUSE_GRAB, BST_UNCHECKED); + free(buf); + + buf = getConfigValue("x11drv", "DesktopDoubleBuffered", "Y"); + if (IS_OPTION_TRUE(*buf)) + CheckDlgButton(hDlg, IDC_DOUBLE_BUFFER, BST_CHECKED); + else + CheckDlgButton(hDlg, IDC_DOUBLE_BUFFER, BST_UNCHECKED); + free(buf); + + buf = getConfigValue("x11drv", "UseTakeFocus", "N"); + if (IS_OPTION_TRUE(*buf)) + CheckDlgButton(hDlg, IDC_USE_TAKE_FOCUS, BST_CHECKED); + else + CheckDlgButton(hDlg, IDC_USE_TAKE_FOCUS, BST_UNCHECKED); + free(buf); updatingUI = FALSE; } @@ -167,13 +182,29 @@ void onScreenDepthChanged(HWND hDlg) { free(newvalue); } -void onEnableManagedClicked(HWND hDlg) { - if (IsDlgButtonChecked(hDlg, IDC_ENABLE_MANAGED) == BST_CHECKED) - addTransaction("x11drv", "Managed", ACTION_SET, "Y"); +void onDXMouseGrabClicked(HWND hDlg) { + if (IsDlgButtonChecked(hDlg, IDC_DX_MOUSE_GRAB) == BST_CHECKED) + addTransaction("x11drv", "DXGrab", ACTION_SET, "Y"); else - addTransaction("x11drv", "Managed", ACTION_SET, "N"); + addTransaction("x11drv", "DXGrab", ACTION_SET, "N"); } + +void onDoubleBufferClicked(HWND hDlg) { + if (IsDlgButtonChecked(hDlg, IDC_DOUBLE_BUFFER) == BST_CHECKED) + addTransaction("x11drv", "DesktopDoubleBuffered", ACTION_SET, "Y"); + else + addTransaction("x11drv", "DesktopDoubleBuffered", ACTION_SET, "N"); +} + +void onUseTakeFocusClicked(HWND hDlg) { + if (IsDlgButtonChecked(hDlg, IDC_USE_TAKE_FOCUS) == BST_CHECKED) + addTransaction("x11drv", "UseTakeFocus", ACTION_SET, "Y"); + else + addTransaction("x11drv", "UseTakeFocus", ACTION_SET, "N"); +} + + INT_PTR CALLBACK X11DrvDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { @@ -192,7 +223,9 @@ X11DrvDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) WINE_TRACE("%d\n", LOWORD(wParam)); switch(LOWORD(wParam)) { case IDC_ENABLE_DESKTOP: onEnableDesktopClicked(hDlg); break; - case IDC_ENABLE_MANAGED: onEnableManagedClicked(hDlg); break; + case IDC_DX_MOUSE_GRAB: onDXMouseGrabClicked(hDlg); break; + case IDC_USE_TAKE_FOCUS: onUseTakeFocusClicked(hDlg); break; + case IDC_DOUBLE_BUFFER: onDoubleBufferClicked(hDlg); break; }; break; }