| OLD | NEW | 
|---|
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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 } | 
| OLD | NEW | 
|---|