Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: src/plugin/PluginClass.cpp

Issue 5163581322559488: Issue 1283 - wrong usage of memset, fix sizeof, make proper initializing (Closed)
Patch Set: Created Oct. 8, 2014, 2:49 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/plugin/NotificationMessage.cpp ('k') | src/plugin/PluginSettings.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #include "PluginStdAfx.h" 1 #include "PluginStdAfx.h"
2 2
3 #include "PluginClass.h" 3 #include "PluginClass.h"
4 #include "PluginSettings.h" 4 #include "PluginSettings.h"
5 #include "PluginSystem.h" 5 #include "PluginSystem.h"
6 #include "PluginFilter.h" 6 #include "PluginFilter.h"
7 #include "PluginMimeFilterClient.h" 7 #include "PluginMimeFilterClient.h"
8 #include "PluginClient.h" 8 #include "PluginClient.h"
9 #include "PluginClientFactory.h" 9 #include "PluginClientFactory.h"
10 #include "PluginMutex.h" 10 #include "PluginMutex.h"
11 #include "sddl.h" 11 #include "sddl.h"
12 #include "PluginUtil.h" 12 #include "PluginUtil.h"
13 #include "PluginUserSettings.h" 13 #include "PluginUserSettings.h"
14 #include "../shared/Utils.h" 14 #include "../shared/Utils.h"
15 #include "../shared/Dictionary.h" 15 #include "../shared/Dictionary.h"
16 #include <thread> 16 #include <thread>
17 #include <array>
18 17
19 #ifdef DEBUG_HIDE_EL 18 #ifdef DEBUG_HIDE_EL
20 DWORD profileTime = 0; 19 DWORD profileTime = 0;
21 #endif 20 #endif
22 21
23 typedef HANDLE (WINAPI *OPENTHEMEDATA)(HWND, LPCWSTR); 22 typedef HANDLE (WINAPI *OPENTHEMEDATA)(HWND, LPCWSTR);
24 typedef HRESULT (WINAPI *DRAWTHEMEBACKGROUND)(HANDLE, HDC, INT, INT, LPRECT, LPR ECT); 23 typedef HRESULT (WINAPI *DRAWTHEMEBACKGROUND)(HANDLE, HDC, INT, INT, LPRECT, LPR ECT);
25 typedef HRESULT (WINAPI *CLOSETHEMEDATA)(HANDLE); 24 typedef HRESULT (WINAPI *CLOSETHEMEDATA)(HANDLE);
26 25
27 HICON CPluginClass::s_hIcons[ICON_MAX] = { NULL, NULL, NULL }; 26 HICON CPluginClass::s_hIcons[ICON_MAX] = { NULL, NULL, NULL };
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 408
410 return IObjectWithSiteImpl<CPluginClass>::SetSite(unknownSite); 409 return IObjectWithSiteImpl<CPluginClass>::SetSite(unknownSite);
411 } 410 }
412 411
413 bool CPluginClass::IsStatusBarEnabled() 412 bool CPluginClass::IsStatusBarEnabled()
414 { 413 {
415 DEBUG_GENERAL("IsStatusBarEnabled start"); 414 DEBUG_GENERAL("IsStatusBarEnabled start");
416 HKEY pHkey; 415 HKEY pHkey;
417 HKEY pHkeySub; 416 HKEY pHkeySub;
418 RegOpenCurrentUser(KEY_QUERY_VALUE, &pHkey); 417 RegOpenCurrentUser(KEY_QUERY_VALUE, &pHkey);
419 DWORD truth = 1; 418 DWORD trueth = 1;
420 DWORD truthSize = sizeof(truth); 419 DWORD truethSize = sizeof(DWORD);
421 RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\Main", &pHkeySub); 420 RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\Main", &pHkeySub);
422 LONG res = RegQueryValueEx(pHkeySub, L"StatusBarWeb", NULL, NULL, (BYTE*)&trut h, &truthSize); 421 LONG res = RegQueryValueEx(pHkeySub, L"StatusBarWeb", NULL, NULL, (BYTE*)&true th, &truethSize);
423 RegCloseKey(pHkey); 422 RegCloseKey(pHkey);
424 if (res != ERROR_SUCCESS) 423 if (res != ERROR_SUCCESS)
425 { 424 {
426 res = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\MINIE", &p HkeySub); 425 res = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\MINIE", &p HkeySub);
427 if (res == ERROR_SUCCESS) 426 if (res == ERROR_SUCCESS)
428 { 427 {
429 LONG res = RegQueryValueEx(pHkeySub, L"ShowStatusBar", NULL, NULL, (BYTE*) &truth, &truthSize); 428 LONG res = RegQueryValueEx(pHkeySub, L"ShowStatusBar", NULL, NULL, (BYTE*) &trueth, &truethSize);
430 if (res == ERROR_SUCCESS) 429 if (res == ERROR_SUCCESS)
431 { 430 {
432 RegCloseKey(pHkey); 431 RegCloseKey(pHkey);
433 } 432 }
434 } 433 }
435 } 434 }
436 DEBUG_GENERAL("IsStatusBarEnabled end"); 435 DEBUG_GENERAL("IsStatusBarEnabled end");
437 return truth == 1; 436 return trueth == 1;
438 } 437 }
439 438
440 void CPluginClass::ShowStatusBar() 439 void CPluginClass::ShowStatusBar()
441 { 440 {
442 DEBUG_GENERAL("ShowStatusBar start"); 441 DEBUG_GENERAL("ShowStatusBar start");
443 442
444 VARIANT_BOOL isVisible; 443 VARIANT_BOOL isVisible;
445 444
446 445
447 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); 446 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser();
(...skipping 24 matching lines...) Expand all
472 MB_OK); 471 MB_OK);
473 return; 472 return;
474 } 473 }
475 // Ask if a user wants to enable a status bar automatically 474 // Ask if a user wants to enable a status bar automatically
476 LRESULT res = MessageBox((HWND)m_hTabWnd, 475 LRESULT res = MessageBox((HWND)m_hTabWnd,
477 dictionary->Lookup("status-bar", "question").c_str(), 476 dictionary->Lookup("status-bar", "question").c_str(),
478 dictionary->Lookup("status-bar", "title").c_str(), 477 dictionary->Lookup("status-bar", "title").c_str(),
479 MB_YESNO); 478 MB_YESNO);
480 if (res == IDYES) 479 if (res == IDYES)
481 { 480 {
482 DWORD truth = 1; 481 DWORD trueth = 1;
483 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\M INIE", &pHkeySub); 482 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\M INIE", &pHkeySub);
484 regRes = RegSetValueEx(pHkeySub, L"ShowStatusBar", 0, REG_DWORD, (BYTE *)&truth, sizeof(truth)); 483 regRes = RegSetValueEx(pHkeySub, L"ShowStatusBar", 0, REG_DWORD, (BYTE *)&trueth, sizeof(DWORD));
485 regRes = RegCloseKey(pHkeySub); 484 regRes = RegCloseKey(pHkeySub);
486 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\M ain", &pHkeySub); 485 regRes = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\M ain", &pHkeySub);
487 regRes = RegSetValueEx(pHkeySub, L"StatusBarWeb", 0, REG_DWORD, (BYTE* )&truth, sizeof(truth)); 486 regRes = RegSetValueEx(pHkeySub, L"StatusBarWeb", 0, REG_DWORD, (BYTE* )&trueth, sizeof(DWORD));
488 regRes = RegCloseKey(pHkeySub); 487 regRes = RegCloseKey(pHkeySub);
489 hr = browser->put_StatusBar(TRUE); 488 hr = browser->put_StatusBar(TRUE);
490 if (FAILED(hr)) 489 if (FAILED(hr))
491 { 490 {
492 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_PUT_STATUSBAR, "Class::Enable statusbar"); 491 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_PUT_STATUSBAR, "Class::Enable statusbar");
493 } 492 }
494 CreateStatusBarPane(); 493 CreateStatusBarPane();
495 494
496 // We need to restart the tab now, to enable the status bar properly 495 // We need to restart the tab now, to enable the status bar properly
497 VARIANT vFlags; 496 VARIANT vFlags;
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
799 } 798 }
800 } 799 }
801 } 800 }
802 s_criticalSectionLocal.Unlock(); 801 s_criticalSectionLocal.Unlock();
803 802
804 // Register pane class 803 // Register pane class
805 if (!GetAtomPaneClass()) 804 if (!GetAtomPaneClass())
806 { 805 {
807 WNDCLASSEX wcex; 806 WNDCLASSEX wcex;
808 807
809 wcex.cbSize = sizeof(wcex); 808 wcex.cbSize = sizeof(WNDCLASSEX);
810 wcex.style = 0; 809 wcex.style = 0;
811 wcex.lpfnWndProc = (WNDPROC)PaneWindowProc; 810 wcex.lpfnWndProc = (WNDPROC)PaneWindowProc;
812 wcex.cbClsExtra = 0; 811 wcex.cbClsExtra = 0;
813 wcex.cbWndExtra = 0; 812 wcex.cbWndExtra = 0;
814 wcex.hInstance = _Module.m_hInst; 813 wcex.hInstance = _Module.m_hInst;
815 wcex.hIcon = NULL; 814 wcex.hIcon = NULL;
816 wcex.hCursor = NULL; 815 wcex.hCursor = NULL;
817 wcex.hbrBackground = NULL; 816 wcex.hbrBackground = NULL;
818 wcex.lpszMenuName = NULL; 817 wcex.lpszMenuName = NULL;
819 wcex.lpszClassName = STATUSBAR_PANE_NAME; 818 wcex.lpszClassName = STATUSBAR_PANE_NAME;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 s_criticalSectionLocal.Unlock(); 874 s_criticalSectionLocal.Unlock();
876 return true; 875 return true;
877 } 876 }
878 877
879 bool CPluginClass::CreateStatusBarPane() 878 bool CPluginClass::CreateStatusBarPane()
880 { 879 {
881 CriticalSection::Lock lock(m_csStatusBar); 880 CriticalSection::Lock lock(m_csStatusBar);
882 881
883 CPluginClient* client = CPluginClient::GetInstance(); 882 CPluginClient* client = CPluginClient::GetInstance();
884 883
885 std::array<wchar_t, MAX_PATH> className; 884 wchar_t szClassName[MAX_PATH];
886 // Get browser window and url 885 // Get browser window and url
887 HWND hBrowserWnd = GetBrowserHWND(); 886 HWND hBrowserWnd = GetBrowserHWND();
888 if (!hBrowserWnd) 887 if (!hBrowserWnd)
889 { 888 {
890 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_BROWSER, "C lass::CreateStatusBarPane - No status bar") 889 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_BROWSER, "C lass::CreateStatusBarPane - No status bar")
891 return false; 890 return false;
892 } 891 }
893 892
894 // Looking for a TabWindowClass window in IE7 893 // Looking for a TabWindowClass window in IE7
895 // the last one should be parent for statusbar 894 // the last one should be parent for statusbar
896 HWND hWndStatusBar = NULL; 895 HWND hWndStatusBar = NULL;
897 896
898 HWND hTabWnd = ::GetWindow(hBrowserWnd, GW_CHILD); 897 HWND hTabWnd = ::GetWindow(hBrowserWnd, GW_CHILD);
899 UINT amoundOfNewTabs = 0; 898 UINT amoundOfNewTabs = 0;
900 HWND uniqueNewTab = NULL; 899 HWND uniqueNewTab = NULL;
901 while (hTabWnd) 900 while (hTabWnd)
902 { 901 {
903 className[0] = L'\0'; 902 memset(szClassName, 0, MAX_PATH);
904 // GetClassNameW returns the number of characters without '\0' 903 GetClassName(hTabWnd, szClassName, MAX_PATH);
905 int classNameLength = GetClassNameW(hTabWnd, className.data(), className.siz e());
906 904
907 if (classNameLength && (wcscmp(className.data(), L"TabWindowClass") == 0 || wcscmp(className.data(), L"Frame Tab") == 0)) 905 if (wcscmp(szClassName, L"TabWindowClass") == 0 || wcscmp(szClassName,L"Fram e Tab") == 0)
908 { 906 {
909 // IE8 support 907 // IE8 support
910 HWND hTabWnd2 = hTabWnd; 908 HWND hTabWnd2 = hTabWnd;
911 if (wcscmp(className.data(), L"Frame Tab") == 0) 909 if (wcscmp(szClassName,L"Frame Tab") == 0)
912 { 910 {
913 hTabWnd2 = ::FindWindowEx(hTabWnd2, NULL, L"TabWindowClass", NULL); 911 hTabWnd2 = ::FindWindowEx(hTabWnd2, NULL, L"TabWindowClass", NULL);
914 } 912 }
915 913
916 if (hTabWnd2) 914 if (hTabWnd2)
917 { 915 {
918 DWORD nProcessId; 916 DWORD nProcessId;
919 ::GetWindowThreadProcessId(hTabWnd2, &nProcessId); 917 ::GetWindowThreadProcessId(hTabWnd2, &nProcessId);
920 if (::GetCurrentProcessId() == nProcessId) 918 if (::GetCurrentProcessId() == nProcessId)
921 { 919 {
(...skipping 26 matching lines...) Expand all
948 } 946 }
949 } 947 }
950 } 948 }
951 949
952 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); 950 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT);
953 } 951 }
954 952
955 HWND hWnd = ::GetWindow(hBrowserWnd, GW_CHILD); 953 HWND hWnd = ::GetWindow(hBrowserWnd, GW_CHILD);
956 while (hWnd) 954 while (hWnd)
957 { 955 {
958 className[0] = L'\0'; 956 memset(szClassName, 0, MAX_PATH);
959 int classNameLength = GetClassNameW(hWnd, className.data(), className.size() ); 957 ::GetClassName(hWnd, szClassName, MAX_PATH);
960 958
961 if (classNameLength && wcscmp(className.data(), L"msctls_statusbar32") == 0) 959 if (wcscmp(szClassName,L"msctls_statusbar32") == 0)
962 { 960 {
963 hWndStatusBar = hWnd; 961 hWndStatusBar = hWnd;
964 break; 962 break;
965 } 963 }
966 964
967 hWnd = ::GetWindow(hWnd, GW_HWNDNEXT); 965 hWnd = ::GetWindow(hWnd, GW_HWNDNEXT);
968 } 966 }
969 967
970 if (!hWndStatusBar) 968 if (!hWndStatusBar)
971 { 969 {
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
1276 std::wstring ctext; 1274 std::wstring ctext;
1277 1275
1278 s_criticalSectionLocal.Lock(); 1276 s_criticalSectionLocal.Lock();
1279 { 1277 {
1280 s_menuDomains.clear(); 1278 s_menuDomains.clear();
1281 } 1279 }
1282 s_criticalSectionLocal.Unlock(); 1280 s_criticalSectionLocal.Unlock();
1283 1281
1284 Dictionary* dictionary = Dictionary::GetInstance(); 1282 Dictionary* dictionary = Dictionary::GetInstance();
1285 1283
1286 MENUITEMINFOW fmii = {}; 1284 MENUITEMINFOW fmii;
1287 fmii.cbSize = sizeof(fmii); 1285 memset(&fmii, 0, sizeof(MENUITEMINFO));
1286 fmii.cbSize = sizeof(MENUITEMINFO);
1288 1287
1289 MENUITEMINFOW miiSep = {}; 1288 MENUITEMINFOW miiSep;
1290 miiSep.cbSize = sizeof(miiSep); 1289 memset(&miiSep, 0, sizeof(MENUITEMINFO));
1290 miiSep.cbSize = sizeof(MENUITEMINFO);
1291 miiSep.fMask = MIIM_TYPE | MIIM_FTYPE; 1291 miiSep.fMask = MIIM_TYPE | MIIM_FTYPE;
1292 miiSep.fType = MFT_SEPARATOR; 1292 miiSep.fType = MFT_SEPARATOR;
1293 1293
1294 CPluginClient* client = CPluginClient::GetInstance(); 1294 CPluginClient* client = CPluginClient::GetInstance();
1295 CPluginSettings* settings = CPluginSettings::GetInstance(); 1295 CPluginSettings* settings = CPluginSettings::GetInstance();
1296 { 1296 {
1297 ctext = dictionary->Lookup("menu", "menu-disable-on-site"); 1297 ctext = dictionary->Lookup("menu", "menu-disable-on-site");
1298 // Is domain in white list? 1298 // Is domain in white list?
1299 ReplaceString(ctext, L"?1?", client->GetHostFromUrl(to_wstring(url))); 1299 ReplaceString(ctext, L"?1?", client->GetHostFromUrl(to_wstring(url)));
1300 if (client->IsWhitelistedUrl(to_wstring(GetTab()->GetDocumentUrl()))) 1300 if (client->IsWhitelistedUrl(to_wstring(GetTab()->GetDocumentUrl())))
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
1375 DWORD nProcessId; 1375 DWORD nProcessId;
1376 ::GetWindowThreadProcessId(hWndToolBar, &nProcessId); 1376 ::GetWindowThreadProcessId(hWndToolBar, &nProcessId);
1377 1377
1378 if (hWndToolBar && ::GetCurrentProcessId() == nProcessId) 1378 if (hWndToolBar && ::GetCurrentProcessId() == nProcessId)
1379 { 1379 {
1380 ::ScreenToClient(hWndToolBar, &pt); 1380 ::ScreenToClient(hWndToolBar, &pt);
1381 int nButton = (int)::SendMessage(hWndToolBar, TB_HITTEST, 0, (LPARAM)&pt); 1381 int nButton = (int)::SendMessage(hWndToolBar, TB_HITTEST, 0, (LPARAM)&pt);
1382 1382
1383 if (nButton > 0) 1383 if (nButton > 0)
1384 { 1384 {
1385 TBBUTTON pTBBtn = {}; 1385 TBBUTTON pTBBtn;
1386 memset(&pTBBtn, 0, sizeof(TBBUTTON));
1386 1387
1387 if (SendMessage(hWndToolBar, TB_GETBUTTON, nButton, (LPARAM)&pTBBtn)) 1388 if (SendMessage(hWndToolBar, TB_GETBUTTON, nButton, (LPARAM)&pTBBtn))
1388 { 1389 {
1389 RECT rcButton; 1390 RECT rcButton;
1390 nIDCommand = pTBBtn.idCommand; 1391 nIDCommand = pTBBtn.idCommand;
1391 1392
1392 if (SendMessage(hWndToolBar, TB_GETRECT, nIDCommand, (LPARAM)&rcButton)) 1393 if (SendMessage(hWndToolBar, TB_GETRECT, nIDCommand, (LPARAM)&rcButton))
1393 { 1394 {
1394 pt.x = rcButton.left; 1395 pt.x = rcButton.left;
1395 pt.y = rcButton.bottom; 1396 pt.y = rcButton.bottom;
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
1797 return icon; 1798 return icon;
1798 } 1799 }
1799 1800
1800 ATOM CPluginClass::GetAtomPaneClass() 1801 ATOM CPluginClass::GetAtomPaneClass()
1801 { 1802 {
1802 return s_atomPaneClass; 1803 return s_atomPaneClass;
1803 } 1804 }
1804 1805
1805 HWND CPluginClass::GetTabHWND() const 1806 HWND CPluginClass::GetTabHWND() const
1806 { 1807 {
1807 std::array<wchar_t, MAX_PATH> className; 1808 wchar_t szClassName[MAX_PATH];
1808 // Get browser window and url 1809 // Get browser window and url
1809 HWND hBrowserWnd = GetBrowserHWND(); 1810 HWND hBrowserWnd = GetBrowserHWND();
1810 if (!hBrowserWnd) 1811 if (!hBrowserWnd)
1811 { 1812 {
1812 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_BROWSER, "C lass::GetTabWindow - No tab window") 1813 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_BROWSER, "C lass::GetTabWindow - No tab window")
1813 s_criticalSectionWindow.Unlock(); 1814 s_criticalSectionWindow.Unlock();
1814 1815
1815 return false; 1816 return false;
1816 } 1817 }
1817 1818
1818 // Looking for a TabWindowClass window in IE7 1819 // Looking for a TabWindowClass window in IE7
1819 1820
1820 HWND hTabWnd = ::GetWindow(hBrowserWnd, GW_CHILD); 1821 HWND hTabWnd = ::GetWindow(hBrowserWnd, GW_CHILD);
1821 while (hTabWnd) 1822 while (hTabWnd)
1822 { 1823 {
1823 className[0] = L'\0'; 1824 memset(szClassName, 0, MAX_PATH);
1824 int classNameLength = GetClassNameW(hTabWnd, className.data(), className.siz e()); 1825 GetClassName(hTabWnd, szClassName, MAX_PATH);
1825 1826
1826 if (classNameLength && (wcscmp(className.data(), L"TabWindowClass") == 0 || wcscmp(className.data(), L"Frame Tab") == 0)) 1827 if (wcscmp(szClassName, L"TabWindowClass") == 0 || wcscmp(szClassName, L"Fra me Tab") == 0)
1827 { 1828 {
1828 // IE8 support 1829 // IE8 support
1829 HWND hTabWnd2 = hTabWnd; 1830 HWND hTabWnd2 = hTabWnd;
1830 if (wcscmp(className.data(), L"Frame Tab") == 0) 1831 if (wcscmp(szClassName, L"Frame Tab") == 0)
1831 { 1832 {
1832 hTabWnd2 = ::FindWindowEx(hTabWnd2, NULL, L"TabWindowClass", NULL); 1833 hTabWnd2 = ::FindWindowEx(hTabWnd2, NULL, L"TabWindowClass", NULL);
1833 } 1834 }
1834 1835
1835 if (hTabWnd2) 1836 if (hTabWnd2)
1836 { 1837 {
1837 DWORD nProcessId; 1838 DWORD nProcessId;
1838 ::GetWindowThreadProcessId(hTabWnd2, &nProcessId); 1839 ::GetWindowThreadProcessId(hTabWnd2, &nProcessId);
1839 if (::GetCurrentProcessId() == nProcessId) 1840 if (::GetCurrentProcessId() == nProcessId)
1840 { 1841 {
(...skipping 23 matching lines...) Expand all
1864 } 1865 }
1865 } 1866 }
1866 } 1867 }
1867 1868
1868 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); 1869 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT);
1869 } 1870 }
1870 1871
1871 return hTabWnd; 1872 return hTabWnd;
1872 1873
1873 } 1874 }
OLDNEW
« no previous file with comments | « src/plugin/NotificationMessage.cpp ('k') | src/plugin/PluginSettings.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld