From 0388e4a5e99d7f38718ac17c4d3e3565d1e2d559 Mon Sep 17 00:00:00 2001
From: George Hazan <ghazan@miranda.im>
Date: Sun, 29 Apr 2018 23:41:17 +0200
Subject: fixes #1307 (horror in webview contact settings)

---
 plugins/WebView/src/version.h           |  2 +-
 plugins/WebView/src/webview.cpp         | 21 ++-----------
 plugins/WebView/src/webview.h           |  1 -
 plugins/WebView/src/webview_datawnd.cpp | 18 +++--------
 plugins/WebView/src/webview_opts.cpp    | 56 ++++++---------------------------
 5 files changed, 17 insertions(+), 81 deletions(-)

(limited to 'plugins/WebView/src')

diff --git a/plugins/WebView/src/version.h b/plugins/WebView/src/version.h
index bd26cbb97e..3b5eaf7336 100644
--- a/plugins/WebView/src/version.h
+++ b/plugins/WebView/src/version.h
@@ -1,7 +1,7 @@
 #define __MAJOR_VERSION      0
 #define __MINOR_VERSION      1
 #define __RELEASE_NUM        3
-#define __BUILD_NUM 0
+#define __BUILD_NUM          1
 
 #include <stdver.h>
 
diff --git a/plugins/WebView/src/webview.cpp b/plugins/WebView/src/webview.cpp
index 1206e4774f..3359fe2cdf 100644
--- a/plugins/WebView/src/webview.cpp
+++ b/plugins/WebView/src/webview.cpp
@@ -37,7 +37,6 @@ UINT_PTR  timerId;
 UINT_PTR  Countdown;
 LOGFONT   g_lf;
 HFONT     h_font;
-HWND      ContactHwnd;
 HMENU     hMenu;
 int       bpStatus;
 HGENMENU  hMenuItem1;
@@ -467,30 +466,14 @@ int ContactMenuItemUpdateData(WPARAM wParam, LPARAM lParam)
 /*****************************************************************************/
 INT_PTR CntOptionsMenuCommand(WPARAM wParam, LPARAM)
 {
-	HWND hwndDlg = WindowList_Find(hWindowList, wParam);
-	if (hwndDlg) {
-		DestroyWindow(hwndDlg);
-		return 0;
-	}
-
-	hwndDlg = CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CONTACT_OPT), nullptr, DlgProcContactOpt, (LPARAM)wParam);
-	ShowWindow(hwndDlg, SW_SHOW);
-	SetActiveWindow(hwndDlg);
+	DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CONTACT_OPT), nullptr, DlgProcContactOpt, wParam);
 	return 0;
 }
 
 /*****************************************************************************/
 INT_PTR CntAlertMenuCommand(WPARAM wParam, LPARAM)
 {
-	HWND hwndDlg = WindowList_Find(hWindowList, (MCONTACT)wParam);
-	if (hwndDlg) {
-		DestroyWindow(hwndDlg);
-		return 0;
-	}
-
-	hwndDlg = CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_ALRT_OPT), nullptr, DlgProcAlertOpt, (LPARAM)wParam);
-	ShowWindow(hwndDlg, SW_SHOW);
-	SetActiveWindow(hwndDlg);
+	DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_ALRT_OPT), nullptr, DlgProcAlertOpt, wParam);
 	return 0;
 }
 
diff --git a/plugins/WebView/src/webview.h b/plugins/WebView/src/webview.h
index 2f8304f051..eb6ffbf572 100644
--- a/plugins/WebView/src/webview.h
+++ b/plugins/WebView/src/webview.h
@@ -142,7 +142,6 @@ extern COLORREF BackgoundClr, TextClr;
 extern UINT_PTR timerId, Countdown;
 extern LOGFONT g_lf;
 extern HFONT h_font;
-extern HWND ContactHwnd;
 extern HMENU hMenu;
 extern int bpStatus;
 extern HNETLIBUSER hNetlibUser;
diff --git a/plugins/WebView/src/webview_datawnd.cpp b/plugins/WebView/src/webview_datawnd.cpp
index f4159e24f3..19b600d481 100644
--- a/plugins/WebView/src/webview_datawnd.cpp
+++ b/plugins/WebView/src/webview_datawnd.cpp
@@ -383,23 +383,13 @@ INT_PTR CALLBACK DlgProcDisplayData(HWND hwndDlg, UINT msg, WPARAM wParam, LPARA
 			break;
 
 		case IDC_OPTIONS_BUTTON:
-			if (hContact = FindContactByUrl(hwndDlg)) {
-				ContactHwnd = CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CONTACT_OPT), hwndDlg, DlgProcContactOpt, (LPARAM) hContact);
-				ShowWindow(ContactHwnd, SW_SHOW);
-				SetActiveWindow(ContactHwnd);
-				EnableWindow(GetDlgItem(hwndDlg, IDC_OPTIONS_BUTTON), 0);
-				EnableWindow(GetDlgItem(hwndDlg, IDC_ALERT_BUTTON), 0);
-			}
+			if (hContact = FindContactByUrl(hwndDlg))
+				DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_CONTACT_OPT), hwndDlg, DlgProcContactOpt, hContact);
 			break;
 
 		case IDC_ALERT_BUTTON:
-			if (hContact = FindContactByUrl(hwndDlg)) {
-				HWND hwndAlertOpt = CreateDialogParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_ALRT_OPT), hwndDlg, DlgProcAlertOpt, (LPARAM) hContact);
-				ShowWindow(hwndAlertOpt, SW_SHOW);
-				SetActiveWindow(hwndAlertOpt);
-				EnableWindow(GetDlgItem(hwndDlg, IDC_ALERT_BUTTON), 0);
-				EnableWindow(GetDlgItem(hwndDlg, IDC_OPTIONS_BUTTON), 0);
-			}
+			if (hContact = FindContactByUrl(hwndDlg))
+				DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(IDD_ALRT_OPT), hwndDlg, DlgProcAlertOpt, hContact);
 			break;
 
 		case IDOK:
diff --git a/plugins/WebView/src/webview_opts.cpp b/plugins/WebView/src/webview_opts.cpp
index 7cbcebb0c0..81095011ee 100644
--- a/plugins/WebView/src/webview_opts.cpp
+++ b/plugins/WebView/src/webview_opts.cpp
@@ -698,7 +698,6 @@ INT_PTR CALLBACK DlgProcAlertOpt(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l
 		case IDC_OK2:
 			{
 				hContact = (MCONTACT)GetWindowLongPtr(hwndDlg, GWLP_USERDATA);
-				wchar_t buf[MAX_PATH];
 
 				eventIndex = db_get_b(hContact, MODULENAME, EVNT_INDEX_KEY, 0);
 				alertIndex = db_get_b(hContact, MODULENAME, ALRT_INDEX_KEY, 0);
@@ -745,6 +744,7 @@ INT_PTR CALLBACK DlgProcAlertOpt(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l
 							break;
 						}
 
+				wchar_t buf[MAX_PATH];
 				GetDlgItemText(hwndDlg, IDC_FILENAME, buf, _countof(buf));
 				db_set_ws(hContact, MODULENAME, FILE_KEY, buf);
 
@@ -764,32 +764,15 @@ INT_PTR CALLBACK DlgProcAlertOpt(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l
 
 				EnableWindow(GetDlgItem(hwndDlg, IDC_ALERT_APPLY), 0);
 
-				if (LOWORD(wParam) == IDC_OK2) {
-					EnableWindow(GetDlgItem(ParentHwnd, IDC_ALERT_BUTTON), 1);
-					EnableWindow(GetDlgItem(ParentHwnd, IDC_OPTIONS_BUTTON), 1);
-					WindowList_Remove(hWindowList, hwndDlg);
-					DestroyWindow(hwndDlg);
-				}
+				if (LOWORD(wParam) == IDC_OK2)
+					EndDialog(hwndDlg, 1);
 			}
-		}
-		break;
+			break;
 
-	case IDC_ALERT_CANCEL:
-		EnableWindow(GetDlgItem(ParentHwnd, IDC_ALERT_BUTTON), 1);
-		EnableWindow(GetDlgItem(ParentHwnd, IDC_OPTIONS_BUTTON), 1);
-		WindowList_Remove(hWindowList, hwndDlg);
-		if (hwndDlg) {
-			DestroyWindow(hwndDlg);
-			hwndDlg = nullptr;
+		case IDC_ALERT_CANCEL:
+		case IDC_CANCEL:
+			EndDialog(hwndDlg, 0);
 		}
-		break;
-
-	case WM_DESTROY:
-	case IDC_CANCEL:
-		EnableWindow(GetDlgItem(ParentHwnd, IDC_ALERT_BUTTON), 1);
-		EnableWindow(GetDlgItem(ParentHwnd, IDC_OPTIONS_BUTTON), 1);
-		WindowList_Remove(hWindowList, hwndDlg);
-		DestroyWindow(hwndDlg);
 	}
 	return FALSE;
 }
@@ -815,7 +798,6 @@ INT_PTR CALLBACK DlgProcContactOpt(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM
 		test2 = 0;
 
 		SetWindowLongPtr(hwndDlg, GWLP_USERDATA, (LONG_PTR)hContact);
-		WindowList_Add(hWindowList, hwndDlg, hContact);
 
 		SetWindowText(hwndDlg, TranslateT("Contact options"));
 
@@ -1036,33 +1018,15 @@ INT_PTR CALLBACK DlgProcContactOpt(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM
 				SetWindowText(ParentHwnd, str);
 				EnableWindow(GetDlgItem(hwndDlg, IDC_OPT_APPLY), 0);
 
-				if (LOWORD(wParam) == IDOK) {
-					EnableWindow(GetDlgItem(ParentHwnd, IDC_OPTIONS_BUTTON), 1);
-					EnableWindow(GetDlgItem(ParentHwnd, IDC_ALERT_BUTTON), 1);
-					if (hwndDlg) {
-						DestroyWindow(hwndDlg);
-						hwndDlg = nullptr;
-					}
-				}
+				if (LOWORD(wParam) == IDOK)
+					EndDialog(hwndDlg, 1);
 			}
 			break;
 
 		case IDC_OPT_CANCEL:
-			EnableWindow(GetDlgItem(ParentHwnd, IDC_OPTIONS_BUTTON), 1);
-			EnableWindow(GetDlgItem(ParentHwnd, IDC_ALERT_BUTTON), 1);
-			WindowList_Remove(hWindowList, hwndDlg);
-			if (hwndDlg) {
-				DestroyWindow(hwndDlg);
-				hwndDlg = nullptr;
-			}
+			EndDialog(hwndDlg, 0);
 		}
 		break;
-
-	case WM_DESTROY:
-		EnableWindow(GetDlgItem(ParentHwnd, IDC_OPTIONS_BUTTON), 1);
-		EnableWindow(GetDlgItem(ParentHwnd, IDC_ALERT_BUTTON), 1);
-		WindowList_Remove(hWindowList, hwndDlg);
-		DestroyWindow(hwndDlg);
 	}
 	return FALSE;
 }
-- 
cgit v1.2.3