//We send the events when we are done to mimic webkit
//Navigated event
- wxWebViewEvent event(wxEVT_COMMAND_WEBVIEW_NAVIGATED,
+ wxWebViewEvent event(wxEVT_WEBVIEW_NAVIGATED,
GetId(), baseUrl, "");
event.SetEventObject(this);
HandleWindowEvent(event);
//Document complete event
- event.SetEventType(wxEVT_COMMAND_WEBVIEW_LOADED);
+ event.SetEventType(wxEVT_WEBVIEW_LOADED);
event.SetEventObject(this);
HandleWindowEvent(event);
}
return document;
}
-bool wxWebViewIE::IsElementVisible(IHTMLElement* elm)
+bool wxWebViewIE::IsElementVisible(wxCOMPtr<IHTMLElement> elm)
{
- wxIHTMLCurrentStyle* style;
- IHTMLElement *elm1 = elm;
- wxIHTMLElement2 *elm2;
+ wxCOMPtr<IHTMLElement> elm1 = elm;
BSTR tmp_bstr;
bool is_visible = true;
//This method is not perfect but it does discover most of the hidden elements.
//so if a better solution is found, then please do improve.
while(elm1)
{
+ wxCOMPtr<wxIHTMLElement2> elm2;
if(SUCCEEDED(elm1->QueryInterface(wxIID_IHTMLElement2, (void**) &elm2)))
{
+ wxCOMPtr<wxIHTMLCurrentStyle> style;
if(SUCCEEDED(elm2->get_currentStyle(&style)))
{
//Check if the object has the style display:none.
is_visible = false;
}
//Check if the object has the style visibility:hidden.
- if(is_visible && (style->get_visibility(&tmp_bstr) != S_OK) ||
+ if((is_visible && (style->get_visibility(&tmp_bstr) != S_OK)) ||
(tmp_bstr != NULL && _wcsicmp(tmp_bstr, L"hidden") == 0))
{
is_visible = false;
IHTMLElement* parent;
if(is_visible && SUCCEEDED(elm1->get_parentElement(&parent)))
{
- elm1->Release();
elm1 = parent;
}
else
void wxWebViewIE::FindInternal(const wxString& text, int flags, int internal_flag)
{
- wxIMarkupServices *pIMS;
- wxIMarkupContainer *pIMC;
- wxIMarkupPointer *ptrBegin, *ptrEnd;
- IHTMLElement* elm;
long find_flag = 0;
- IHTMLDocument2 *document = GetDocument();
+ wxCOMPtr<wxIMarkupServices> pIMS;
+ wxCOMPtr<IHTMLDocument2> document = GetDocument();
+
//This function does the acutal work.
- if(SUCCEEDED(document->QueryInterface(wxIID_IMarkupServices, (void **)&pIMS)))
+ if(document && SUCCEEDED(document->QueryInterface(wxIID_IMarkupServices, (void **)&pIMS)))
{
+ wxCOMPtr<wxIMarkupContainer> pIMC;
if(SUCCEEDED(document->QueryInterface(wxIID_IMarkupContainer, (void **)&pIMC)))
{
+ wxCOMPtr<wxIMarkupPointer> ptrBegin, ptrEnd;
BSTR attr_bstr = SysAllocString(L"style=\"background-color:#ffff00\"");
BSTR text_bstr = SysAllocString(text.wc_str());
pIMS->CreateMarkupPointer(&ptrBegin);
while(ptrBegin->FindText(text_bstr, find_flag, ptrEnd, NULL) == S_OK)
{
+ wxCOMPtr<IHTMLElement> elm;
if(ptrBegin->CurrentScope(&elm) == S_OK)
{
if(IsElementVisible(elm))
m_findPointers.push_back(wxFindPointers(cptrBegin,cptrEnd));
}
}
- elm->Release();
}
ptrBegin->MoveToPointer(ptrEnd);
}
//Clean up.
SysFreeString(text_bstr);
SysFreeString(attr_bstr);
- pIMC->Release();
- ptrBegin->Release();
- ptrEnd->Release();
}
- pIMS->Release();
}
- document->Release();
}
long wxWebViewIE::FindNext(int direction)
return wxNOT_FOUND;
}
}
- //some variables to use later on.
- IHTMLElement *body_element;
- IHTMLBodyElement *body;
- wxIHTMLTxtRange *range = NULL;
- wxIMarkupServices *pIMS;
- IHTMLDocument2 *document = GetDocument();
+
+ wxCOMPtr<IHTMLDocument2> document = GetDocument();
+ wxCOMPtr<IHTMLElement> body_element;
+
long ret = -1;
//Now try to create a range from the body.
- if(SUCCEEDED(document->get_body(&body_element)))
+ if(document && SUCCEEDED(document->get_body(&body_element)))
{
+ wxCOMPtr<IHTMLBodyElement> body;
if(SUCCEEDED(body_element->QueryInterface(IID_IHTMLBodyElement,(void**)&body)))
{
+ wxCOMPtr<wxIHTMLTxtRange> range;
if(SUCCEEDED(body->createTextRange((IHTMLTxtRange**)(&range))))
{
+ wxCOMPtr<wxIMarkupServices> pIMS;
//So far so good, now we try to position our find pointers.
if(SUCCEEDED(document->QueryInterface(wxIID_IMarkupServices,(void **)&pIMS)))
{
{
ret = m_findPosition;
}
- pIMS->Release();
}
- range->Release();
}
- body->Release();
}
- body_element->Release();
}
- document->Release();
return ret;
}
wxString url = evt[1].GetString();
wxString target = evt[3].GetString();
- wxWebViewEvent event(wxEVT_COMMAND_WEBVIEW_NAVIGATING,
+ wxWebViewEvent event(wxEVT_WEBVIEW_NAVIGATING,
GetId(), url, target);
//skip empty javascript events.
wxString url = evt[1].GetString();
// TODO: set target parameter if possible
wxString target = wxEmptyString;
- wxWebViewEvent event(wxEVT_COMMAND_WEBVIEW_NAVIGATED,
+ wxWebViewEvent event(wxEVT_WEBVIEW_NAVIGATED,
GetId(), url, target);
event.SetEventObject(this);
HandleWindowEvent(event);
FindClear();
// TODO: set target parameter if possible
wxString target = wxEmptyString;
- wxWebViewEvent event(wxEVT_COMMAND_WEBVIEW_LOADED, GetId(),
+ wxWebViewEvent event(wxEVT_WEBVIEW_LOADED, GetId(),
url, target);
event.SetEventObject(this);
HandleWindowEvent(event);
{
wxString title = evt[0].GetString();
- wxWebViewEvent event(wxEVT_COMMAND_WEBVIEW_TITLE_CHANGED,
+ wxWebViewEvent event(wxEVT_WEBVIEW_TITLE_CHANGED,
GetId(), GetCurrentURL(), "");
event.SetString(title);
event.SetEventObject(this);
case DISPID_NAVIGATEERROR:
{
- wxWebViewEvent event(wxEVT_COMMAND_WEBVIEW_ERROR, GetId(),
+ wxWebViewEvent event(wxEVT_WEBVIEW_ERROR, GetId(),
evt[1].GetString(), evt[2].GetString());
event.SetEventObject(this);
{
wxString url = evt[4].GetString();
- wxWebViewEvent event(wxEVT_COMMAND_WEBVIEW_NEWWINDOW,
+ wxWebViewEvent event(wxEVT_WEBVIEW_NEWWINDOW,
GetId(), url, wxEmptyString);
event.SetEventObject(this);
HandleWindowEvent(event);