Sync with trunk (48237)
[reactos.git] / base / applications / wordpad / registry.c
index 7311fb6..472ed4d 100644 (file)
@@ -34,6 +34,7 @@ static const WCHAR key_text[] = {'T','e','x','t',0};
 static const WCHAR var_file[] = {'F','i','l','e','%','d',0};
 static const WCHAR var_framerect[] = {'F','r','a','m','e','R','e','c','t',0};
 static const WCHAR var_barstate0[] = {'B','a','r','S','t','a','t','e','0',0};
+static const WCHAR var_wrap[] = {'W','r','a','p',0};
 static const WCHAR var_maximized[] = {'M','a','x','i','m','i','z','e','d',0};
 
 static LRESULT registry_get_handle(HKEY *hKey, LPDWORD action, LPCWSTR subKey)
@@ -377,10 +378,22 @@ static void registry_read_formatopts(int index, LPCWSTR key, DWORD barState[], D
     if(!fetched)
         barState[index] = (1 << BANDID_TOOLBAR) | (1 << BANDID_FORMATBAR) | (1 << BANDID_RULER) | (1 << BANDID_STATUSBAR);
 
-    if(index == reg_formatindex(SF_RTF))
-        wordWrap[index] = ID_WORDWRAP_WINDOW;
-    else if(index == reg_formatindex(SF_TEXT))
-        wordWrap[index] = ID_WORDWRAP_NONE;
+    fetched = FALSE;
+    if(action == REG_OPENED_EXISTING_KEY)
+    {
+        DWORD size = sizeof(DWORD);
+        if(RegQueryValueExW(hKey, var_wrap, 0, NULL, (LPBYTE)&wordWrap[index],
+           &size) == ERROR_SUCCESS)
+            fetched = TRUE;
+    }
+
+    if (!fetched)
+    {
+        if(index == reg_formatindex(SF_RTF))
+            wordWrap[index] = ID_WORDWRAP_WINDOW;
+        else if(index == reg_formatindex(SF_TEXT))
+            wordWrap[index] = ID_WORDWRAP_NONE;
+    }
 
     RegCloseKey(hKey);
 }
@@ -391,7 +404,7 @@ void registry_read_formatopts_all(DWORD barState[], DWORD wordWrap[])
     registry_read_formatopts(reg_formatindex(SF_TEXT), key_text, barState, wordWrap);
 }
 
-static void registry_set_formatopts(int index, LPCWSTR key, DWORD barState[])
+static void registry_set_formatopts(int index, LPCWSTR key, DWORD barState[], DWORD wordWrap[])
 {
     HKEY hKey;
     DWORD action = 0;
@@ -400,13 +413,14 @@ static void registry_set_formatopts(int index, LPCWSTR key, DWORD barState[])
     {
         RegSetValueExW(hKey, var_barstate0, 0, REG_DWORD, (LPBYTE)&barState[index],
                        sizeof(DWORD));
-
+        RegSetValueExW(hKey, var_wrap, 0, REG_DWORD, (LPBYTE)&wordWrap[index],
+                       sizeof(DWORD));
         RegCloseKey(hKey);
     }
 }
 
-void registry_set_formatopts_all(DWORD barState[])
+void registry_set_formatopts_all(DWORD barState[], DWORD wordWrap[])
 {
-    registry_set_formatopts(reg_formatindex(SF_RTF), key_rtf, barState);
-    registry_set_formatopts(reg_formatindex(SF_TEXT), key_text, barState);
+    registry_set_formatopts(reg_formatindex(SF_RTF), key_rtf, barState, wordWrap);
+    registry_set_formatopts(reg_formatindex(SF_TEXT), key_text, barState, wordWrap);
 }