Juan Lang : cryptui: Redraw purposes list based on purpose selection.

Alexandre Julliard julliard at winehq.org
Fri Dec 19 11:19:23 CST 2008


Module: wine
Branch: master
Commit: a45c2484e08046653ec8cab077f802a574b82114
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a45c2484e08046653ec8cab077f802a574b82114

Author: Juan Lang <juan.lang at gmail.com>
Date:   Thu Dec 18 14:02:53 2008 -0800

cryptui: Redraw purposes list based on purpose selection.

---

 dlls/cryptui/main.c |   40 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/dlls/cryptui/main.c b/dlls/cryptui/main.c
index f5e0a9a..00a0389 100644
--- a/dlls/cryptui/main.c
+++ b/dlls/cryptui/main.c
@@ -1665,6 +1665,31 @@ static void redraw_states(HWND list, BOOL enabled)
     }
 }
 
+typedef enum {
+    PurposeEnableAll = 0,
+    PurposeDisableAll,
+    PurposeEnableSelected
+} PurposeSelection;
+
+static void select_purposes(HWND hwnd, PurposeSelection selection)
+{
+    HWND lv = GetDlgItem(hwnd, IDC_CERTIFICATE_USAGES);
+
+    switch (selection)
+    {
+    case PurposeEnableAll:
+    case PurposeDisableAll:
+        EnableWindow(lv, FALSE);
+        redraw_states(lv, FALSE);
+        EnableWindow(GetDlgItem(hwnd, IDC_ADD_PURPOSE), FALSE);
+        break;
+    case PurposeEnableSelected:
+        EnableWindow(lv, TRUE);
+        redraw_states(lv, TRUE);
+        EnableWindow(GetDlgItem(hwnd, IDC_ADD_PURPOSE), TRUE);
+    }
+}
+
 extern BOOL WINAPI WTHelperGetKnownUsages(DWORD action,
  PCCRYPT_OID_INFO **usages);
 
@@ -1754,8 +1779,7 @@ static void show_cert_usages(HWND hwnd, struct detail_data *data)
             WTHelperGetKnownUsages(2, &usages);
         }
     }
-    EnableWindow(lv, FALSE);
-    redraw_states(lv, FALSE);
+    select_purposes(hwnd, PurposeEnableAll);
 }
 
 static void set_general_cert_properties(HWND hwnd, struct detail_data *data)
@@ -1776,7 +1800,6 @@ static void set_general_cert_properties(HWND hwnd, struct detail_data *data)
         HeapFree(GetProcessHeap(), 0, str);
     }
     show_cert_usages(hwnd, data);
-    EnableWindow(GetDlgItem(hwnd, IDC_ADD_PURPOSE), FALSE);
     SendMessageW(GetDlgItem(hwnd, IDC_ENABLE_ALL_PURPOSES), BM_CLICK, 0, 0);
 }
 
@@ -1823,6 +1846,17 @@ static LRESULT CALLBACK cert_properties_general_dlg_proc(HWND hwnd, UINT msg,
                 ShowScrollBar(description, SB_VERT, lines > 1);
             }
             break;
+        case BN_CLICKED:
+            switch (LOWORD(wp))
+            {
+            case IDC_ENABLE_ALL_PURPOSES:
+            case IDC_DISABLE_ALL_PURPOSES:
+            case IDC_ENABLE_SELECTED_PURPOSES:
+                SendMessageW(GetParent(hwnd), PSM_CHANGED, (WPARAM)hwnd, 0);
+                select_purposes(hwnd, LOWORD(wp) - IDC_ENABLE_ALL_PURPOSES);
+                break;
+            }
+            break;
         }
         break;
     }




More information about the wine-cvs mailing list