[7/7] dinput: Working CANCEL and RESET buttons in ConfigureDevices dialog.
Lucas Fialho Zawacki
lfzawacki at gmail.com
Sun Aug 21 20:26:46 CDT 2011
From: Lucas Fialho Zawacki <lfzawacki at gmail.com>
---
dlls/dinput/config.c | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/dlls/dinput/config.c b/dlls/dinput/config.c
index fa2a260..464a982 100644
--- a/dlls/dinput/config.c
+++ b/dlls/dinput/config.c
@@ -276,9 +276,22 @@ static void assign_action(HWND dialog, DeviceData* device, LPDIACTIONFORMATW lpd
lpdiaf->rgoAction[action].dwHow = DIAH_USERCONFIG;
}
+static void copy_actions(LPDIACTIONFORMATW to, LPDIACTIONFORMATW from)
+{
+ int i;
+ for (i=0; i < from->dwNumActions; i++)
+ {
+ to->rgoAction[i].guidInstance = from->rgoAction[i].guidInstance;
+ to->rgoAction[i].dwObjID = from->rgoAction[i].dwObjID;
+ to->rgoAction[i].dwHow = from->rgoAction[i].dwHow;
+ to->rgoAction[i].lptszActionName = from->rgoAction[i].lptszActionName;
+ }
+}
+
static INT_PTR CALLBACK ConfigureDevicesDlgProc(HWND dialog, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static LPDIACTIONFORMATW lpdiaf;
+ static DIACTIONFORMATW original_diaf;
static DIDevicesData devices_data;
static ConfigureDevicesData *conf_data;
static int display_only = 0;
@@ -290,6 +303,10 @@ static INT_PTR CALLBACK ConfigureDevicesDlgProc(HWND dialog, UINT uMsg, WPARAM w
conf_data = (ConfigureDevicesData*) lParam;
lpdiaf = conf_data->params->lprgFormats;
+ original_diaf.dwNumActions = lpdiaf->dwNumActions;
+ original_diaf.rgoAction = HeapAlloc(GetProcessHeap(), 0, sizeof(DIACTIONW) * lpdiaf->dwNumActions);
+ copy_actions(&original_diaf, lpdiaf);
+
if (!(conf_data->flags & DICD_EDIT)) display_only = 1;
init_listview_columns(dialog);
@@ -344,11 +361,14 @@ static INT_PTR CALLBACK ConfigureDevicesDlgProc(HWND dialog, UINT uMsg, WPARAM w
break;
case IDCANCEL:
+ copy_actions(lpdiaf, &original_diaf);
EndDialog(dialog, 0);
destroy_devices(&devices_data);
break;
case IDRESET:
+ copy_actions(lpdiaf, &original_diaf);
+ fill_device_object_list(dialog, get_cur_device(dialog, &devices_data), lpdiaf);
break;
}
break;
--
1.7.0.4
More information about the wine-patches
mailing list