From f57112a9f86b3507657acb9bc201db0ceddebe1f Mon Sep 17 00:00:00 2001
From: Rein Klazes <rklazes@xs4all.nl>
Date: Tue, 15 Jan 2002 20:26:47 +0000
Subject: [PATCH] Make DM_SETDEFID message work for owner drawn buttons as
 well.

---
 windows/defdlg.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/windows/defdlg.c b/windows/defdlg.c
index d63c9e33039..a8d10cf1117 100644
--- a/windows/defdlg.c
+++ b/windows/defdlg.c
@@ -119,8 +119,10 @@ static HWND DEFDLG_FindDefButton( HWND hwndDlg )
 static BOOL DEFDLG_SetDefButton( HWND hwndDlg, DIALOGINFO *dlgInfo,
                                    HWND hwndNew )
 {
+    DWORD dlgcode;
     if (hwndNew &&
-        !(SendMessageW(hwndNew, WM_GETDLGCODE, 0, 0 ) & DLGC_UNDEFPUSHBUTTON))
+        !((dlgcode=SendMessageW(hwndNew, WM_GETDLGCODE, 0, 0 )) 
+            & (DLGC_UNDEFPUSHBUTTON | DLGC_BUTTON)))
         return FALSE;  /* Destination is not a push button */
     
     if (dlgInfo->idResult)  /* There's already a default pushbutton */
@@ -131,7 +133,8 @@ static BOOL DEFDLG_SetDefButton( HWND hwndDlg, DIALOGINFO *dlgInfo,
     }
     if (hwndNew)
     {
-        SendMessageA( hwndNew, BM_SETSTYLE, BS_DEFPUSHBUTTON, TRUE );
+        if(dlgcode==DLGC_UNDEFPUSHBUTTON)
+            SendMessageA( hwndNew, BM_SETSTYLE, BS_DEFPUSHBUTTON, TRUE );
         dlgInfo->idResult = GetDlgCtrlID( hwndNew );
     }
     else dlgInfo->idResult = 0;
-- 
GitLab