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

Unified Diff: src/plugin/PluginClass.cpp

Issue 11450010: IE6 status bar and FRP fix. Debugging info added. (Closed)
Patch Set: Created Aug. 19, 2013, 8:12 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/plugin/PluginClass.h ('k') | src/plugin/PluginTabBase.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/plugin/PluginClass.cpp
===================================================================
--- a/src/plugin/PluginClass.cpp
+++ b/src/plugin/PluginClass.cpp
@@ -271,6 +271,7 @@
// Check if loaded as BHO
if (GetBrowser())
{
+ DEBUG_GENERAL("Loaded as BHO");
CComPtr<IConnectionPoint> pPoint = GetConnectionPoint();
if (pPoint)
{
@@ -295,6 +296,7 @@
}
else // Check if loaded as toolbar handler
{
+ DEBUG_GENERAL("Loaded as toolbar handler");
CComPtr<IServiceProvider> pServiceProvider;
HRESULT hr = unknownSite->QueryInterface(&pServiceProvider);
@@ -328,6 +330,7 @@
}
catch (std::runtime_error e)
{
+ DEBUG_ERROR(e.what());
Unadvice();
}
}
@@ -390,6 +393,7 @@
bool CPluginClass::IsStatusBarEnabled()
{
+ DEBUG_GENERAL("IsStatusBarEnabled start");
HKEY pHkey;
HKEY pHkeySub;
RegOpenCurrentUser(KEY_QUERY_VALUE, &pHkey);
@@ -410,11 +414,14 @@
}
}
}
+ DEBUG_GENERAL("IsStatusBarEnabled end");
return trueth == 1;
}
void CPluginClass::ShowStatusBar()
{
+ DEBUG_GENERAL("ShowStatusBar start");
+
VARIANT_BOOL isVisible;
@@ -494,6 +501,7 @@
DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_GET_STATUSBAR, "Class::Get statusbar state");
}
}
+ DEBUG_GENERAL("ShowStatusBar end");
}
void CPluginClass::BeforeNavigate2(DISPPARAMS* pDispParams)
@@ -566,6 +574,7 @@
}
STDMETHODIMP CPluginClass::OnTabChanged(DISPPARAMS* pDispParams, WORD wFlags)
{
+ DEBUG_GENERAL("Tab changed");
bool newtabshown = pDispParams->rgvarg[1].intVal==3;
if (newtabshown)
{
@@ -586,6 +595,7 @@
}
}
}
+ DEBUG_GENERAL("Tab change end");
return VARIANT_TRUE;
}
@@ -646,12 +656,15 @@
}
else
{
- RECT rect;
- BOOL rectRes = GetClientRect(m_hStatusBarWnd, &rect);
- if (rectRes == TRUE)
+ if (CPluginClient::GetInstance()->GetIEVersion() > 6)
{
- MoveWindow(m_hPaneWnd, rect.right - 200, 0, m_nPaneWidth, rect.bottom - rect.top, TRUE);
- }
+ RECT rect;
+ BOOL rectRes = GetClientRect(m_hStatusBarWnd, &rect);
+ if (rectRes == TRUE)
+ {
+ 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
+ }
+ }
}
break;
case DISPID_STATUSTEXTCHANGE:
@@ -729,6 +742,7 @@
bool CPluginClass::InitObject(bool bBHO)
{
+ DEBUG_GENERAL("InitObject");
CPluginSettings* settings = CPluginSettings::GetInstance();
if (!settings->GetPluginEnabled())
@@ -802,19 +816,20 @@
}
+ int ieVersion = CPluginClient::GetInstance()->GetIEVersion();
// Create status pane
- if (bBHO)
+ if (bBHO && ieVersion > 6)
Oleksandr 2013/08/19 08:19:13 This is an actual fix of the status bar icon for I
{
if (!CreateStatusBarPane())
Wladimir Palant 2013/08/19 14:49:40 This nested if isn't actually necessary, it can be
{
return false;
}
}
-
+
if (CPluginClient::GetInstance()->IsFirstRun())
{
// IE6 can't be accessed from another thread, execute in current thread
- if (CPluginClient::GetInstance()->GetIEVersion() < 7)
+ if (ieVersion < 7)
{
FirstRunThread();
}
@@ -833,16 +848,12 @@
bool CPluginClass::CreateStatusBarPane()
{
- DEBUG_GENERAL(L"Getting client");
+ DEBUG_GENERAL(L"Going to create status bar");
+ CriticalSection::Lock lock(m_csStatusBar);
+ DEBUG_GENERAL(L"Create status bar");
CPluginClient* client = CPluginClient::GetInstance();
- DEBUG_GENERAL(L"Getting ieversion");
-
- if (client->GetIEVersion()< 7)
-
- return true;
-
TCHAR szClassName[MAX_PATH];
DEBUG_GENERAL(L"Getting browser wnd");
// Get browser window and url
@@ -850,7 +861,7 @@
if (!hBrowserWnd)
{
DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_BROWSER, "Class::CreateStatusBarPane - No status bar")
- return false;
+ return false;
}
// Looking for a TabWindowClass window in IE7
@@ -938,7 +949,7 @@
if (!hWndStatusBar)
{
DEBUG_ERROR_LOG(0, PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_NO_STATUSBAR_WIN, "Class::CreateStatusBarPane - No status bar")
- return true;
+ return true;
}
// Calculate pane height
@@ -976,9 +987,10 @@
if (!hWndNewPane)
{
DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_CREATE_STATUSBAR_PANE, "Class::CreateStatusBarPane - CreateWindowEx")
- return false;
+ return false;
}
+ DEBUG_GENERAL("ABP window created");
m_hTabWnd = hTabWnd;
m_hStatusBarWnd = hWndStatusBar;
m_hPaneWnd = hWndNewPane;
@@ -988,6 +1000,7 @@
// Subclass status bar
m_pWndProcStatus = (WNDPROC)SetWindowLongPtr(hWndStatusBar, GWLP_WNDPROC, (LPARAM)(WNDPROC)NewStatusProc);
+ DEBUG_GENERAL("SetWindowLongPtr done");
// Adjust pane
UINT nPartCount = ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, 0, 0);
@@ -998,12 +1011,16 @@
::SendMessage(m_hStatusBarWnd, SB_GETPARTS, nPartCount, (LPARAM)pData);
::SendMessage(m_hStatusBarWnd, SB_SETPARTS, nPartCount, (LPARAM)pData);
- delete[] pData;
+ delete []pData;
}
+
+ DEBUG_GENERAL("Pane adjusted");
+
HDC hdc = GetWindowDC(m_hStatusBarWnd);
SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0);
ReleaseDC(m_hStatusBarWnd, hdc);
-
+
+ DEBUG_GENERAL("Released DC");
return true;
}
@@ -1110,6 +1127,7 @@
HMENU CPluginClass::CreatePluginMenu(const CString& url)
{
+ DEBUG_GENERAL("CreatePluginMenu");
HINSTANCE hInstance = _AtlBaseModule.GetModuleInstance();
HMENU hMenu = ::LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1));
@@ -1343,6 +1361,8 @@
bool CPluginClass::SetMenuBar(HMENU hMenu, const CString& url)
{
+ DEBUG_GENERAL("SetMenuBar");
+
std::wstring ctext;
s_criticalSectionLocal.Lock();
@@ -1353,11 +1373,6 @@
}
s_criticalSectionLocal.Unlock();
- CPluginTab* tab = GetTab(::GetCurrentThreadId());
- if (!tab)
- {
- return false;
- }
Dictionary* dictionary = Dictionary::GetInstance();
@@ -1790,18 +1805,17 @@
void CPluginClass::UpdateStatusBar()
{
DEBUG_GENERAL("*** Updating statusbar")
-
- if (m_hPaneWnd == NULL)
+ if (m_hPaneWnd == NULL)
+ {
+ CreateStatusBarPane();
+ }
+ if (m_hPaneWnd != NULL)
+ {
+ 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
{
- CreateStatusBarPane();
+ DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_INVALIDATE_STATUSBAR, "Class::Invalidate statusbar");
}
- if (m_hPaneWnd != NULL)
- {
- if (!::InvalidateRect(m_hPaneWnd, NULL, FALSE))
- {
- DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_UI, PLUGIN_ERROR_UI_INVALIDATE_STATUSBAR, "Class::Invalidate statusbar");
- }
- }
+ }
}
« no previous file with comments | « src/plugin/PluginClass.h ('k') | src/plugin/PluginTabBase.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld