Reviewed by Kevin Ollivier.
authorkevino@webkit.org <kevino@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 3 Dec 2008 00:13:31 +0000 (00:13 +0000)
committerkevino@webkit.org <kevino@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 3 Dec 2008 00:13:31 +0000 (00:13 +0000)
Add HitTest to wxWebView (and wxWebFrame).

https://bugs.webkit.org/show_bug.cgi?id=22459

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@38924 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/wx/ChangeLog
WebKit/wx/WebFrame.cpp
WebKit/wx/WebFrame.h
WebKit/wx/WebView.cpp
WebKit/wx/WebView.h

index c2c86c1225ff1a21707a73540970ed484e4684e2..ec2fd4c2e7284431d6feee555d3fb2c02ba86be3 100644 (file)
@@ -1,3 +1,18 @@
+2008-12-02  Kevin Watters  <kevinwatters@gmail.com>
+
+        Reviewed by Kevin Ollivier.
+
+        Add HitTest to wxWebView (and wxWebFrame).
+        
+        https://bugs.webkit.org/show_bug.cgi?id=22459
+
+        * WebFrame.cpp:
+        (wxWebFrame::HitTest):
+        * WebFrame.h:
+        * WebView.cpp:
+        (wxWebView::HitTest):
+        * WebView.h:
+
 2008-11-24  Darin Fisher  <darin@chromium.org>
 
         Fix bustage.
index 74c79470cb43b310f147bc336a3fa344b67fe1f2..4211af76d45076fcb5ad838a6318728c2f0a175d 100644 (file)
 #include "Document.h"
 #include "Editor.h"
 #include "Element.h"
+#include "EventHandler.h"
 #include "Frame.h"
 #include "FrameLoader.h"
 #include "FrameView.h"
+#include "HitTestResult.h"
 #include "HTMLFrameOwnerElement.h"
 #include "markup.h"
 #include "Page.h"
@@ -346,3 +348,21 @@ void wxWebFrame::Paste()
         m_impl->frame->editor()->paste();
 
 }
+
+wxWebViewDOMElementInfo wxWebFrame::HitTest(const wxPoint& pos) const
+{
+    wxWebViewDOMElementInfo domInfo;
+
+    if (m_impl->frame->view()) {
+        WebCore::HitTestResult result = m_impl->frame->eventHandler()->hitTestResultAtPoint(m_impl->frame->view()->windowToContents(pos), false);
+        if (result.innerNode()) {
+            domInfo.SetLink(result.absoluteLinkURL().string());
+            domInfo.SetText(result.textContent());
+            domInfo.SetImageSrc(result.absoluteImageURL().string());
+            domInfo.SetSelected(result.isSelected());
+        }
+    }
+
+    return domInfo;
+}
+
index 083043f69469b95dbb23b4e17c02d74daabad3be..a2803a2d633c44b84805283feebfaf40784b944c 100644 (file)
@@ -58,6 +58,37 @@ namespace WebCore {
 #define WXDLLIMPEXP_WEBKIT
 #endif // SWIG
 
+class WXDLLIMPEXP_WEBKIT wxWebViewDOMElementInfo
+{
+public:
+    wxWebViewDOMElementInfo();
+
+    ~wxWebViewDOMElementInfo() { }
+
+    wxString GetTagName() const { return m_tagName; }
+    void SetTagName(const wxString& name) { m_tagName = name; }
+
+    bool IsSelected() const { return m_isSelected; }
+    void SetSelected(bool sel) { m_isSelected = sel; }
+
+    wxString GetText() const { return m_text; }
+    void SetText(const wxString& text) { m_text = text; }
+
+    wxString GetImageSrc() const { return m_imageSrc; }
+    void SetImageSrc(const wxString& src) { m_imageSrc = src; }
+
+    wxString GetLink() const { return m_link; }
+    void SetLink(const wxString& link) { m_link = link; }
+
+private:
+    void* m_domElement;
+    bool m_isSelected;
+    wxString m_tagName;
+    wxString m_text;
+    wxString m_imageSrc;
+    wxString m_link;
+};
+
 class WXDLLIMPEXP_WEBKIT wxWebFrame
 {
     // ChromeClientWx needs to get the Page* stored by the wxWebView
@@ -114,6 +145,8 @@ class WXDLLIMPEXP_WEBKIT wxWebFrame
     void SetPageTitle(const wxString& title) { m_title = title; }
     
     WebCore::Frame* GetFrame();
+
+    wxWebViewDOMElementInfo HitTest(const wxPoint& post) const;
     
 private:
     float m_textMagnifier;
index 40d28871ad3e47adbf88a74d38ca5218ebe95577..8da4ac7f545dfdfe4a423fdf646524010709ab8b 100644 (file)
@@ -627,3 +627,12 @@ void wxWebView::OnActivate(wxActivateEvent& event)
 
     event.Skip();
 }
+
+wxWebViewDOMElementInfo wxWebView::HitTest(const wxPoint& pos) const
+{
+    if (m_mainFrame)
+        return m_mainFrame->HitTest(pos);
+
+    return wxWebViewDOMElementInfo();
+}
+
index 89c06dbe7a10e549dc2a19b2e7f389f48488b4b5..953ae296f315acfd885b6d5bfc1d1c3d1d980cd4 100644 (file)
@@ -33,6 +33,8 @@
     #include "wx/wx.h"
 #endif
 
+#include "WebFrame.h"
+
 class WebViewPrivate;
 class WebViewFrameData;
 class wxWebFrame;
@@ -135,6 +137,8 @@ public:
     
     wxWebFrame* GetMainFrame() { return m_mainFrame; }
 
+    wxWebViewDOMElementInfo HitTest(const wxPoint& post) const;
+
 protected:
 
     // event handlers (these functions should _not_ be virtual)
@@ -188,37 +192,6 @@ enum {
     wxWEBVIEW_NAV_OTHER = 32
 };
 
-class WXDLLIMPEXP_WEBKIT wxWebViewDOMElementInfo
-{
-public: 
-    wxWebViewDOMElementInfo();
-
-    ~wxWebViewDOMElementInfo() { }
-    
-    wxString GetTagName() const { return m_tagName; }
-    void SetTagName(const wxString& name) { m_tagName = name; }
-
-    bool IsSelected() const { return m_isSelected; }
-    void SetSelected(bool sel) { m_isSelected = sel; }
-    wxString GetText() const { return m_text; }
-    void SetText(const wxString& text) { m_text = text; }
-    wxString GetImageSrc() const { return m_imageSrc; }
-    void SetImageSrc(const wxString& src) { m_imageSrc = src; }
-    wxString GetLink() const { return m_link; }
-    void SetLink(const wxString& link) { m_link = link; }
-
-private:
-    void* m_domElement;
-    bool m_isSelected;
-    wxString m_tagName;
-    wxString m_text;
-    wxString m_imageSrc;
-    wxString m_link;
-};
-
 class WXDLLIMPEXP_WEBKIT wxWebViewBeforeLoadEvent : public wxCommandEvent
 {
 #ifndef SWIG