| Left: | ||
| Right: |
| 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 #ifdef SUPPORT_FILTER | 6 #ifdef SUPPORT_FILTER |
| 7 #include "PluginFilter.h" | 7 #include "PluginFilter.h" |
| 8 #endif | 8 #endif |
| 9 #include "PluginMimeFilterClient.h" | 9 #include "PluginMimeFilterClient.h" |
| 10 #include "PluginClient.h" | 10 #include "PluginClient.h" |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 264 s_asyncWebBrowser2 = unknownSite; | 264 s_asyncWebBrowser2 = unknownSite; |
| 265 s_instances.Add(this); | 265 s_instances.Add(this); |
| 266 } | 266 } |
| 267 s_criticalSectionLocal.Unlock(); | 267 s_criticalSectionLocal.Unlock(); |
| 268 | 268 |
| 269 try | 269 try |
| 270 { | 270 { |
| 271 // Check if loaded as BHO | 271 // Check if loaded as BHO |
| 272 if (GetBrowser()) | 272 if (GetBrowser()) |
| 273 { | 273 { |
| 274 DEBUG_GENERAL("Loaded as BHO"); | |
| 274 CComPtr<IConnectionPoint> pPoint = GetConnectionPoint(); | 275 CComPtr<IConnectionPoint> pPoint = GetConnectionPoint(); |
| 275 if (pPoint) | 276 if (pPoint) |
| 276 { | 277 { |
| 277 HRESULT hr = pPoint->Advise((IDispatch*)this, &m_nConnectionID); | 278 HRESULT hr = pPoint->Advise((IDispatch*)this, &m_nConnectionID); |
| 278 if (SUCCEEDED(hr)) | 279 if (SUCCEEDED(hr)) |
| 279 { | 280 { |
| 280 m_isAdviced = true; | 281 m_isAdviced = true; |
| 281 | 282 |
| 282 DWORD id; | 283 DWORD id; |
| 283 HANDLE handle = ::CreateThread(NULL, 0, StartInitObject, (LPVOID)thi s, NULL, &id); | 284 HANDLE handle = ::CreateThread(NULL, 0, StartInitObject, (LPVOID)thi s, NULL, &id); |
| 284 if (handle == NULL) | 285 if (handle == NULL) |
| 285 { | 286 { |
| 286 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_THREAD, PLUGIN_ERRO R_MAIN_THREAD_CREATE_PROCESS, "Class::Thread - Failed to create main thread"); | 287 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_THREAD, PLUGIN_ERRO R_MAIN_THREAD_CREATE_PROCESS, "Class::Thread - Failed to create main thread"); |
| 287 } | 288 } |
| 288 | 289 |
| 289 } | 290 } |
| 290 else | 291 else |
| 291 { | 292 { |
| 292 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_ADV ICE, "Class::SetSite - Advice"); | 293 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_ADV ICE, "Class::SetSite - Advice"); |
| 293 } | 294 } |
| 294 } | 295 } |
| 295 } | 296 } |
| 296 else // Check if loaded as toolbar handler | 297 else // Check if loaded as toolbar handler |
| 297 { | 298 { |
| 299 DEBUG_GENERAL("Loaded as toolbar handler"); | |
| 298 CComPtr<IServiceProvider> pServiceProvider; | 300 CComPtr<IServiceProvider> pServiceProvider; |
| 299 | 301 |
| 300 HRESULT hr = unknownSite->QueryInterface(&pServiceProvider); | 302 HRESULT hr = unknownSite->QueryInterface(&pServiceProvider); |
| 301 if (SUCCEEDED(hr)) | 303 if (SUCCEEDED(hr)) |
| 302 { | 304 { |
| 303 if (pServiceProvider) | 305 if (pServiceProvider) |
| 304 { | 306 { |
| 305 s_criticalSectionBrowser.Lock(); | 307 s_criticalSectionBrowser.Lock(); |
| 306 { | 308 { |
| 307 HRESULT hr = pServiceProvider->QueryService(IID_IWebBrowserApp, &m _webBrowser2); | 309 HRESULT hr = pServiceProvider->QueryService(IID_IWebBrowserApp, &m _webBrowser2); |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 321 } | 323 } |
| 322 } | 324 } |
| 323 else | 325 else |
| 324 { | 326 { |
| 325 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_QUERY _SERVICE_PROVIDER, "Class::SetSite - QueryInterface (service provider)"); | 327 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SET_SITE, PLUGIN_ERROR_SET_SITE_QUERY _SERVICE_PROVIDER, "Class::SetSite - QueryInterface (service provider)"); |
| 326 } | 328 } |
| 327 } | 329 } |
| 328 } | 330 } |
| 329 catch (std::runtime_error e) | 331 catch (std::runtime_error e) |
| 330 { | 332 { |
| 333 DEBUG_ERROR(e.what()); | |
| 331 Unadvice(); | 334 Unadvice(); |
| 332 } | 335 } |
| 333 } | 336 } |
| 334 else | 337 else |
| 335 { | 338 { |
| 336 // Unadvice | 339 // Unadvice |
| 337 Unadvice(); | 340 Unadvice(); |
| 338 | 341 |
| 339 // Destroy window | 342 // Destroy window |
| 340 if (m_pWndProcStatus) | 343 if (m_pWndProcStatus) |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 383 DEBUG_GENERAL("============================================================= ===================\nNEW TAB UI - END\n========================================= =======================================") | 386 DEBUG_GENERAL("============================================================= ===================\nNEW TAB UI - END\n========================================= =======================================") |
| 384 | 387 |
| 385 ::CoUninitialize(); | 388 ::CoUninitialize(); |
| 386 } | 389 } |
| 387 | 390 |
| 388 return IObjectWithSiteImpl<CPluginClass>::SetSite(unknownSite); | 391 return IObjectWithSiteImpl<CPluginClass>::SetSite(unknownSite); |
| 389 } | 392 } |
| 390 | 393 |
| 391 bool CPluginClass::IsStatusBarEnabled() | 394 bool CPluginClass::IsStatusBarEnabled() |
| 392 { | 395 { |
| 396 DEBUG_GENERAL("IsStatusBarEnabled start"); | |
| 393 HKEY pHkey; | 397 HKEY pHkey; |
| 394 HKEY pHkeySub; | 398 HKEY pHkeySub; |
| 395 RegOpenCurrentUser(KEY_QUERY_VALUE, &pHkey); | 399 RegOpenCurrentUser(KEY_QUERY_VALUE, &pHkey); |
| 396 DWORD trueth = 1; | 400 DWORD trueth = 1; |
| 397 DWORD truethSize = sizeof(DWORD); | 401 DWORD truethSize = sizeof(DWORD); |
| 398 RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\Main", &pHkeySub); | 402 RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\Main", &pHkeySub); |
| 399 LONG res = RegQueryValueEx(pHkeySub, L"StatusBarWeb", NULL, NULL, (BYTE*)&true th, &truethSize); | 403 LONG res = RegQueryValueEx(pHkeySub, L"StatusBarWeb", NULL, NULL, (BYTE*)&true th, &truethSize); |
| 400 RegCloseKey(pHkey); | 404 RegCloseKey(pHkey); |
| 401 if (res != ERROR_SUCCESS) | 405 if (res != ERROR_SUCCESS) |
| 402 { | 406 { |
| 403 res = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\MINIE", &p HkeySub); | 407 res = RegOpenKey(pHkey, L"Software\\Microsoft\\Internet Explorer\\MINIE", &p HkeySub); |
| 404 if (res == ERROR_SUCCESS) | 408 if (res == ERROR_SUCCESS) |
| 405 { | 409 { |
| 406 LONG res = RegQueryValueEx(pHkeySub, L"ShowStatusBar", NULL, NULL, (BYTE*) &trueth, &truethSize); | 410 LONG res = RegQueryValueEx(pHkeySub, L"ShowStatusBar", NULL, NULL, (BYTE*) &trueth, &truethSize); |
| 407 if (res == ERROR_SUCCESS) | 411 if (res == ERROR_SUCCESS) |
| 408 { | 412 { |
| 409 RegCloseKey(pHkey); | 413 RegCloseKey(pHkey); |
| 410 } | 414 } |
| 411 } | 415 } |
| 412 } | 416 } |
| 417 DEBUG_GENERAL("IsStatusBarEnabled end"); | |
| 413 return trueth == 1; | 418 return trueth == 1; |
| 414 } | 419 } |
| 415 | 420 |
| 416 void CPluginClass::ShowStatusBar() | 421 void CPluginClass::ShowStatusBar() |
| 417 { | 422 { |
| 423 DEBUG_GENERAL("ShowStatusBar start"); | |
| 424 | |
| 418 VARIANT_BOOL isVisible; | 425 VARIANT_BOOL isVisible; |
| 419 | 426 |
| 420 | 427 |
| 421 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); | 428 CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); |
| 422 if (browser) | 429 if (browser) |
| 423 { | 430 { |
| 424 HRESULT hr = S_OK; | 431 HRESULT hr = S_OK; |
| 425 hr = browser->get_StatusBar(&isVisible); | 432 hr = browser->get_StatusBar(&isVisible); |
| 426 if (SUCCEEDED(hr)) | 433 if (SUCCEEDED(hr)) |
| 427 { | 434 { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 487 } | 494 } |
| 488 browser->Quit(); | 495 browser->Quit(); |
| 489 } | 496 } |
| 490 } | 497 } |
| 491 } | 498 } |
| 492 else | 499 else |
| 493 { | 500 { |
| 494 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_STATUSBAR, "Class ::Get statusbar state"); | 501 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_STATUSBAR, "Class ::Get statusbar state"); |
| 495 } | 502 } |
| 496 } | 503 } |
| 504 DEBUG_GENERAL("ShowStatusBar end"); | |
| 497 } | 505 } |
| 498 | 506 |
| 499 void CPluginClass::BeforeNavigate2(DISPPARAMS* pDispParams) | 507 void CPluginClass::BeforeNavigate2(DISPPARAMS* pDispParams) |
| 500 { | 508 { |
| 501 | 509 |
| 502 if (pDispParams->cArgs < 7) | 510 if (pDispParams->cArgs < 7) |
| 503 { | 511 { |
| 504 return; | 512 return; |
| 505 } | 513 } |
| 506 //Register a mime filter if it's not registered yet | 514 //Register a mime filter if it's not registered yet |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 559 { | 567 { |
| 560 DEBUG_NAVI(L"Navi::Begin navigation url:" + url) | 568 DEBUG_NAVI(L"Navi::Begin navigation url:" + url) |
| 561 | 569 |
| 562 #ifdef SUPPORT_FRAME_CACHING | 570 #ifdef SUPPORT_FRAME_CACHING |
| 563 m_tab->CacheFrame(url); | 571 m_tab->CacheFrame(url); |
| 564 #endif | 572 #endif |
| 565 } | 573 } |
| 566 } | 574 } |
| 567 STDMETHODIMP CPluginClass::OnTabChanged(DISPPARAMS* pDispParams, WORD wFlags) | 575 STDMETHODIMP CPluginClass::OnTabChanged(DISPPARAMS* pDispParams, WORD wFlags) |
| 568 { | 576 { |
| 577 DEBUG_GENERAL("Tab changed"); | |
| 569 bool newtabshown = pDispParams->rgvarg[1].intVal==3; | 578 bool newtabshown = pDispParams->rgvarg[1].intVal==3; |
| 570 if (newtabshown) | 579 if (newtabshown) |
| 571 { | 580 { |
| 572 std::map<DWORD,CPluginClass*>::const_iterator it = s_threadInstances.find(Ge tCurrentThreadId()); | 581 std::map<DWORD,CPluginClass*>::const_iterator it = s_threadInstances.find(Ge tCurrentThreadId()); |
| 573 if (it == s_threadInstances.end()) | 582 if (it == s_threadInstances.end()) |
| 574 { | 583 { |
| 575 s_threadInstances[::GetCurrentThreadId()] = this; | 584 s_threadInstances[::GetCurrentThreadId()] = this; |
| 576 | 585 |
| 577 | 586 |
| 578 if (!m_isInitializedOk) | 587 if (!m_isInitializedOk) |
| 579 { | 588 { |
| 580 m_isInitializedOk = true; | 589 m_isInitializedOk = true; |
| 581 if (!InitObject(true)) | 590 if (!InitObject(true)) |
| 582 { | 591 { |
| 583 // Unadvice(); | 592 // Unadvice(); |
| 584 } | 593 } |
| 585 UpdateStatusBar(); | 594 UpdateStatusBar(); |
| 586 } | 595 } |
| 587 } | 596 } |
| 588 } | 597 } |
| 598 DEBUG_GENERAL("Tab change end"); | |
| 589 return VARIANT_TRUE; | 599 return VARIANT_TRUE; |
| 590 } | 600 } |
| 591 | 601 |
| 592 // This gets called whenever there's a browser event | 602 // This gets called whenever there's a browser event |
| 593 STDMETHODIMP CPluginClass::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, W ORD wFlags, DISPPARAMS* pDispParams, VARIANT* pvarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) | 603 STDMETHODIMP CPluginClass::Invoke(DISPID dispidMember, REFIID riid, LCID lcid, W ORD wFlags, DISPPARAMS* pDispParams, VARIANT* pvarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) |
| 594 { | 604 { |
| 595 WCHAR tmp[256]; | 605 WCHAR tmp[256]; |
| 596 wsprintf(tmp, L"Invoke: %d\n", dispidMember); | 606 wsprintf(tmp, L"Invoke: %d\n", dispidMember); |
| 597 DEBUG_GENERAL(tmp); | 607 DEBUG_GENERAL(tmp); |
| 598 switch (dispidMember) | 608 switch (dispidMember) |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 639 case DISPID_BEFORENAVIGATE: | 649 case DISPID_BEFORENAVIGATE: |
| 640 DEBUG_NAVI("Navi::BeforeNavigate") | 650 DEBUG_NAVI("Navi::BeforeNavigate") |
| 641 return VARIANT_TRUE; | 651 return VARIANT_TRUE; |
| 642 case DISPID_COMMANDSTATECHANGE: | 652 case DISPID_COMMANDSTATECHANGE: |
| 643 if (m_hPaneWnd == NULL) | 653 if (m_hPaneWnd == NULL) |
| 644 { | 654 { |
| 645 CreateStatusBarPane(); | 655 CreateStatusBarPane(); |
| 646 } | 656 } |
| 647 else | 657 else |
| 648 { | 658 { |
| 649 RECT rect; | 659 if (CPluginClient::GetInstance()->GetIEVersion() > 6) |
| 650 BOOL rectRes = GetClientRect(m_hStatusBarWnd, &rect); | |
| 651 if (rectRes == TRUE) | |
| 652 { | 660 { |
| 653 MoveWindow(m_hPaneWnd, rect.right - 200, 0, m_nPaneWidth, rect.bottom - rect.top, TRUE); | 661 RECT rect; |
| 654 } | 662 BOOL rectRes = GetClientRect(m_hStatusBarWnd, &rect); |
| 663 if (rectRes == TRUE) | |
| 664 { | |
| 665 MoveWindow(m_hPaneWnd, rect.right - 200, 0, m_nPaneWidth, rect.bottom - rect.top, TRUE); | |
|
Oleksandr
2013/08/19 08:19:13
This repositions the icon when IE is resized. IE6
| |
| 666 } | |
| 667 } | |
| 655 } | 668 } |
| 656 break; | 669 break; |
| 657 case DISPID_STATUSTEXTCHANGE: | 670 case DISPID_STATUSTEXTCHANGE: |
| 658 break; | 671 break; |
| 659 | 672 |
| 660 case DISPID_BEFORENAVIGATE2: | 673 case DISPID_BEFORENAVIGATE2: |
| 661 BeforeNavigate2(pDispParams); | 674 BeforeNavigate2(pDispParams); |
| 662 break; | 675 break; |
| 663 | 676 |
| 664 case DISPID_DOWNLOADBEGIN: | 677 case DISPID_DOWNLOADBEGIN: |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 722 | 735 |
| 723 // do nothing | 736 // do nothing |
| 724 break; | 737 break; |
| 725 } | 738 } |
| 726 | 739 |
| 727 return VARIANT_TRUE; | 740 return VARIANT_TRUE; |
| 728 } | 741 } |
| 729 | 742 |
| 730 bool CPluginClass::InitObject(bool bBHO) | 743 bool CPluginClass::InitObject(bool bBHO) |
| 731 { | 744 { |
| 745 DEBUG_GENERAL("InitObject"); | |
| 732 CPluginSettings* settings = CPluginSettings::GetInstance(); | 746 CPluginSettings* settings = CPluginSettings::GetInstance(); |
| 733 | 747 |
| 734 if (!settings->GetPluginEnabled()) | 748 if (!settings->GetPluginEnabled()) |
| 735 { | 749 { |
| 736 s_mimeFilter->Unregister(); | 750 s_mimeFilter->Unregister(); |
| 737 } | 751 } |
| 738 | 752 |
| 739 // Load theme module | 753 // Load theme module |
| 740 s_criticalSectionLocal.Lock(); | 754 s_criticalSectionLocal.Lock(); |
| 741 { | 755 { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 795 s_criticalSectionLocal.Unlock(); | 809 s_criticalSectionLocal.Unlock(); |
| 796 | 810 |
| 797 if (!GetAtomPaneClass()) | 811 if (!GetAtomPaneClass()) |
| 798 { | 812 { |
| 799 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_REGISTE R_PANE_CLASS, "Class::InitObject - RegisterClassEx"); | 813 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_REGISTE R_PANE_CLASS, "Class::InitObject - RegisterClassEx"); |
| 800 return false; | 814 return false; |
| 801 } | 815 } |
| 802 } | 816 } |
| 803 | 817 |
| 804 | 818 |
| 819 int ieVersion = CPluginClient::GetInstance()->GetIEVersion(); | |
| 805 // Create status pane | 820 // Create status pane |
| 806 if (bBHO) | 821 if (bBHO && ieVersion > 6) |
|
Oleksandr
2013/08/19 08:19:13
This is an actual fix of the status bar icon for I
| |
| 807 { | 822 { |
| 808 if (!CreateStatusBarPane()) | 823 if (!CreateStatusBarPane()) |
|
Wladimir Palant
2013/08/19 14:49:40
This nested if isn't actually necessary, it can be
| |
| 809 { | 824 { |
| 810 return false; | 825 return false; |
| 811 } | 826 } |
| 812 } | 827 } |
| 813 | 828 |
| 814 if (CPluginClient::GetInstance()->IsFirstRun()) | 829 if (CPluginClient::GetInstance()->IsFirstRun()) |
| 815 { | 830 { |
| 816 // IE6 can't be accessed from another thread, execute in current thread | 831 // IE6 can't be accessed from another thread, execute in current thread |
| 817 if (CPluginClient::GetInstance()->GetIEVersion() < 7) | 832 if (ieVersion < 7) |
| 818 { | 833 { |
| 819 FirstRunThread(); | 834 FirstRunThread(); |
| 820 } | 835 } |
| 821 else | 836 else |
| 822 { | 837 { |
| 823 CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)CPluginClass::FirstRunThr ead, NULL, NULL, NULL); | 838 CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)CPluginClass::FirstRunThr ead, NULL, NULL, NULL); |
| 824 } | 839 } |
| 825 if ((m_hPaneWnd == NULL) || (!IsStatusBarEnabled())) | 840 if ((m_hPaneWnd == NULL) || (!IsStatusBarEnabled())) |
| 826 { | 841 { |
| 827 ShowStatusBar(); | 842 ShowStatusBar(); |
| 828 } | 843 } |
| 829 | 844 |
| 830 } | 845 } |
| 831 return true; | 846 return true; |
| 832 } | 847 } |
| 833 | 848 |
| 834 bool CPluginClass::CreateStatusBarPane() | 849 bool CPluginClass::CreateStatusBarPane() |
| 835 { | 850 { |
| 836 DEBUG_GENERAL(L"Getting client"); | 851 DEBUG_GENERAL(L"Going to create status bar"); |
| 852 CriticalSection::Lock lock(m_csStatusBar); | |
| 853 DEBUG_GENERAL(L"Create status bar"); | |
| 837 | 854 |
| 838 CPluginClient* client = CPluginClient::GetInstance(); | 855 CPluginClient* client = CPluginClient::GetInstance(); |
| 839 | 856 |
| 840 DEBUG_GENERAL(L"Getting ieversion"); | |
| 841 | |
| 842 if (client->GetIEVersion()< 7) | |
| 843 | |
| 844 return true; | |
| 845 | |
| 846 TCHAR szClassName[MAX_PATH]; | 857 TCHAR szClassName[MAX_PATH]; |
| 847 DEBUG_GENERAL(L"Getting browser wnd"); | 858 DEBUG_GENERAL(L"Getting browser wnd"); |
| 848 // Get browser window and url | 859 // Get browser window and url |
| 849 HWND hBrowserWnd = GetBrowserHWND(); | 860 HWND hBrowserWnd = GetBrowserHWND(); |
| 850 if (!hBrowserWnd) | 861 if (!hBrowserWnd) |
| 851 { | 862 { |
| 852 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_BROWSER, "C lass::CreateStatusBarPane - No status bar") | 863 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_BROWSER, "C lass::CreateStatusBarPane - No status bar") |
| 853 return false; | 864 return false; |
| 854 } | 865 } |
| 855 | 866 |
| 856 // Looking for a TabWindowClass window in IE7 | 867 // Looking for a TabWindowClass window in IE7 |
| 857 // the last one should be parent for statusbar | 868 // the last one should be parent for statusbar |
| 858 HWND hWndStatusBar = NULL; | 869 HWND hWndStatusBar = NULL; |
| 859 | 870 |
| 860 DEBUG_GENERAL(L"Locating status bar window"); | 871 DEBUG_GENERAL(L"Locating status bar window"); |
| 861 | 872 |
| 862 HWND hTabWnd = ::GetWindow(hBrowserWnd, GW_CHILD); | 873 HWND hTabWnd = ::GetWindow(hBrowserWnd, GW_CHILD); |
| 863 UINT amoundOfNewTabs = 0; | 874 UINT amoundOfNewTabs = 0; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 931 } | 942 } |
| 932 | 943 |
| 933 hWnd = ::GetWindow(hWnd, GW_HWNDNEXT); | 944 hWnd = ::GetWindow(hWnd, GW_HWNDNEXT); |
| 934 } | 945 } |
| 935 | 946 |
| 936 DEBUG_GENERAL(L"Status bar located 2"); | 947 DEBUG_GENERAL(L"Status bar located 2"); |
| 937 | 948 |
| 938 if (!hWndStatusBar) | 949 if (!hWndStatusBar) |
| 939 { | 950 { |
| 940 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_WIN, "Class ::CreateStatusBarPane - No status bar") | 951 DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_WIN, "Class ::CreateStatusBarPane - No status bar") |
| 941 return true; | 952 return true; |
| 942 } | 953 } |
| 943 | 954 |
| 944 // Calculate pane height | 955 // Calculate pane height |
| 945 CRect rcStatusBar; | 956 CRect rcStatusBar; |
| 946 ::GetClientRect(hWndStatusBar, &rcStatusBar); | 957 ::GetClientRect(hWndStatusBar, &rcStatusBar); |
| 947 | 958 |
| 948 if (rcStatusBar.Height() > 0) | 959 if (rcStatusBar.Height() > 0) |
| 949 { | 960 { |
| 950 #ifdef _DEBUG | 961 #ifdef _DEBUG |
| 951 m_nPaneWidth = 70; | 962 m_nPaneWidth = 70; |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 969 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, | 980 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, |
| 970 rcStatusBar.Width() - 500,0,m_nPaneWidth,rcStatusBar.Height(), | 981 rcStatusBar.Width() - 500,0,m_nPaneWidth,rcStatusBar.Height(), |
| 971 hWndStatusBar, | 982 hWndStatusBar, |
| 972 (HMENU)3671, | 983 (HMENU)3671, |
| 973 _Module.m_hInst, | 984 _Module.m_hInst, |
| 974 NULL); | 985 NULL); |
| 975 | 986 |
| 976 if (!hWndNewPane) | 987 if (!hWndNewPane) |
| 977 { | 988 { |
| 978 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_CREATE_ST ATUSBAR_PANE, "Class::CreateStatusBarPane - CreateWindowEx") | 989 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_CREATE_ST ATUSBAR_PANE, "Class::CreateStatusBarPane - CreateWindowEx") |
| 979 return false; | 990 return false; |
| 980 } | 991 } |
| 981 | 992 |
| 993 DEBUG_GENERAL("ABP window created"); | |
| 982 m_hTabWnd = hTabWnd; | 994 m_hTabWnd = hTabWnd; |
| 983 m_hStatusBarWnd = hWndStatusBar; | 995 m_hStatusBarWnd = hWndStatusBar; |
| 984 m_hPaneWnd = hWndNewPane; | 996 m_hPaneWnd = hWndNewPane; |
| 985 | 997 |
| 986 UpdateTheme(); | 998 UpdateTheme(); |
| 987 | 999 |
| 988 // Subclass status bar | 1000 // Subclass status bar |
| 989 m_pWndProcStatus = (WNDPROC)SetWindowLongPtr(hWndStatusBar, GWLP_WNDPROC, (LPA RAM)(WNDPROC)NewStatusProc); | 1001 m_pWndProcStatus = (WNDPROC)SetWindowLongPtr(hWndStatusBar, GWLP_WNDPROC, (LPA RAM)(WNDPROC)NewStatusProc); |
| 990 | 1002 |
| 1003 DEBUG_GENERAL("SetWindowLongPtr done"); | |
| 991 // Adjust pane | 1004 // Adjust pane |
| 992 UINT nPartCount = ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, 0, 0); | 1005 UINT nPartCount = ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, 0, 0); |
| 993 | 1006 |
| 994 if (nPartCount > 1) | 1007 if (nPartCount > 1) |
| 995 { | 1008 { |
| 996 INT *pData = new INT[nPartCount]; | 1009 INT *pData = new INT[nPartCount]; |
| 997 | 1010 |
| 998 ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, nPartCount, (LPARAM)pData); | 1011 ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, nPartCount, (LPARAM)pData); |
| 999 ::SendMessage(m_hStatusBarWnd, SB_SETPARTS, nPartCount, (LPARAM)pData); | 1012 ::SendMessage(m_hStatusBarWnd, SB_SETPARTS, nPartCount, (LPARAM)pData); |
| 1000 | 1013 |
| 1001 delete[] pData; | 1014 delete []pData; |
| 1002 } | 1015 } |
| 1016 | |
| 1017 DEBUG_GENERAL("Pane adjusted"); | |
| 1018 | |
| 1003 HDC hdc = GetWindowDC(m_hStatusBarWnd); | 1019 HDC hdc = GetWindowDC(m_hStatusBarWnd); |
| 1004 SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0); | 1020 SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0); |
| 1005 ReleaseDC(m_hStatusBarWnd, hdc); | 1021 ReleaseDC(m_hStatusBarWnd, hdc); |
| 1006 | 1022 |
| 1023 DEBUG_GENERAL("Released DC"); | |
| 1007 return true; | 1024 return true; |
| 1008 } | 1025 } |
| 1009 | 1026 |
| 1010 void CPluginClass::FirstRunThread() | 1027 void CPluginClass::FirstRunThread() |
| 1011 { | 1028 { |
| 1012 CoInitialize(NULL); | 1029 CoInitialize(NULL); |
| 1013 VARIANT vFlags; | 1030 VARIANT vFlags; |
| 1014 vFlags.vt = VT_I4; | 1031 vFlags.vt = VT_I4; |
| 1015 vFlags.intVal = navOpenInNewTab; | 1032 vFlags.intVal = navOpenInNewTab; |
| 1016 | 1033 |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1103 if (cCmds == 0) return E_INVALIDARG; | 1120 if (cCmds == 0) return E_INVALIDARG; |
| 1104 if (prgCmds == 0) return E_POINTER; | 1121 if (prgCmds == 0) return E_POINTER; |
| 1105 | 1122 |
| 1106 prgCmds[0].cmdf = OLECMDF_ENABLED; | 1123 prgCmds[0].cmdf = OLECMDF_ENABLED; |
| 1107 | 1124 |
| 1108 return S_OK; | 1125 return S_OK; |
| 1109 } | 1126 } |
| 1110 | 1127 |
| 1111 HMENU CPluginClass::CreatePluginMenu(const CString& url) | 1128 HMENU CPluginClass::CreatePluginMenu(const CString& url) |
| 1112 { | 1129 { |
| 1130 DEBUG_GENERAL("CreatePluginMenu"); | |
| 1113 HINSTANCE hInstance = _AtlBaseModule.GetModuleInstance(); | 1131 HINSTANCE hInstance = _AtlBaseModule.GetModuleInstance(); |
| 1114 | 1132 |
| 1115 HMENU hMenu = ::LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1)); | 1133 HMENU hMenu = ::LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1)); |
| 1116 | 1134 |
| 1117 HMENU hMenuTrackPopup = GetSubMenu(hMenu, 0); | 1135 HMENU hMenuTrackPopup = GetSubMenu(hMenu, 0); |
| 1118 | 1136 |
| 1119 SetMenuBar(hMenuTrackPopup, url); | 1137 SetMenuBar(hMenuTrackPopup, url); |
| 1120 | 1138 |
| 1121 return hMenuTrackPopup; | 1139 return hMenuTrackPopup; |
| 1122 } | 1140 } |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1336 break; | 1354 break; |
| 1337 } | 1355 } |
| 1338 | 1356 |
| 1339 // Invalidate and redraw the control | 1357 // Invalidate and redraw the control |
| 1340 UpdateStatusBar(); | 1358 UpdateStatusBar(); |
| 1341 } | 1359 } |
| 1342 | 1360 |
| 1343 | 1361 |
| 1344 bool CPluginClass::SetMenuBar(HMENU hMenu, const CString& url) | 1362 bool CPluginClass::SetMenuBar(HMENU hMenu, const CString& url) |
| 1345 { | 1363 { |
| 1364 DEBUG_GENERAL("SetMenuBar"); | |
| 1365 | |
| 1346 std::wstring ctext; | 1366 std::wstring ctext; |
| 1347 | 1367 |
| 1348 s_criticalSectionLocal.Lock(); | 1368 s_criticalSectionLocal.Lock(); |
| 1349 { | 1369 { |
| 1350 #ifdef SUPPORT_WHITELIST | 1370 #ifdef SUPPORT_WHITELIST |
| 1351 s_menuDomains.clear(); | 1371 s_menuDomains.clear(); |
| 1352 #endif | 1372 #endif |
| 1353 } | 1373 } |
| 1354 s_criticalSectionLocal.Unlock(); | 1374 s_criticalSectionLocal.Unlock(); |
| 1355 | 1375 |
| 1356 CPluginTab* tab = GetTab(::GetCurrentThreadId()); | |
| 1357 if (!tab) | |
| 1358 { | |
| 1359 return false; | |
| 1360 } | |
| 1361 | 1376 |
| 1362 Dictionary* dictionary = Dictionary::GetInstance(); | 1377 Dictionary* dictionary = Dictionary::GetInstance(); |
| 1363 | 1378 |
| 1364 MENUITEMINFOW fmii; | 1379 MENUITEMINFOW fmii; |
| 1365 memset(&fmii, 0, sizeof(MENUITEMINFO)); | 1380 memset(&fmii, 0, sizeof(MENUITEMINFO)); |
| 1366 fmii.cbSize = sizeof(MENUITEMINFO); | 1381 fmii.cbSize = sizeof(MENUITEMINFO); |
| 1367 | 1382 |
| 1368 MENUITEMINFOW miiSep; | 1383 MENUITEMINFOW miiSep; |
| 1369 memset(&miiSep, 0, sizeof(MENUITEMINFO)); | 1384 memset(&miiSep, 0, sizeof(MENUITEMINFO)); |
| 1370 miiSep.cbSize = sizeof(MENUITEMINFO); | 1385 miiSep.cbSize = sizeof(MENUITEMINFO); |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1783 break; | 1798 break; |
| 1784 } | 1799 } |
| 1785 | 1800 |
| 1786 return DefWindowProc(hWnd, message, wParam, lParam); | 1801 return DefWindowProc(hWnd, message, wParam, lParam); |
| 1787 } | 1802 } |
| 1788 | 1803 |
| 1789 | 1804 |
| 1790 void CPluginClass::UpdateStatusBar() | 1805 void CPluginClass::UpdateStatusBar() |
| 1791 { | 1806 { |
| 1792 DEBUG_GENERAL("*** Updating statusbar") | 1807 DEBUG_GENERAL("*** Updating statusbar") |
| 1793 | 1808 if (m_hPaneWnd == NULL) |
| 1794 if (m_hPaneWnd == NULL) | 1809 { |
| 1810 CreateStatusBarPane(); | |
| 1811 } | |
| 1812 if (m_hPaneWnd != NULL) | |
| 1813 { | |
| 1814 if (!::InvalidateRect(m_hPaneWnd, NULL, FALSE)) | |
|
Felix Dahlke
2013/08/19 08:31:17
No need for a nested if, you can merge this with t
| |
| 1795 { | 1815 { |
| 1796 CreateStatusBarPane(); | 1816 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_INVALID ATE_STATUSBAR, "Class::Invalidate statusbar"); |
| 1797 } | 1817 } |
| 1798 if (m_hPaneWnd != NULL) | 1818 } |
| 1799 { | |
| 1800 if (!::InvalidateRect(m_hPaneWnd, NULL, FALSE)) | |
| 1801 { | |
| 1802 DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_INVAL IDATE_STATUSBAR, "Class::Invalidate statusbar"); | |
| 1803 } | |
| 1804 } | |
| 1805 } | 1819 } |
| 1806 | 1820 |
| 1807 | 1821 |
| 1808 void CPluginClass::Unadvice() | 1822 void CPluginClass::Unadvice() |
| 1809 { | 1823 { |
| 1810 s_criticalSectionLocal.Lock(); | 1824 s_criticalSectionLocal.Lock(); |
| 1811 { | 1825 { |
| 1812 if (m_isAdviced) | 1826 if (m_isAdviced) |
| 1813 { | 1827 { |
| 1814 CComPtr<IConnectionPoint> pPoint = GetConnectionPoint(); | 1828 CComPtr<IConnectionPoint> pPoint = GetConnectionPoint(); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1917 } | 1931 } |
| 1918 } | 1932 } |
| 1919 } | 1933 } |
| 1920 | 1934 |
| 1921 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); | 1935 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); |
| 1922 } | 1936 } |
| 1923 | 1937 |
| 1924 return hTabWnd; | 1938 return hTabWnd; |
| 1925 | 1939 |
| 1926 } | 1940 } |
| OLD | NEW |