Alexander Nicolaysen Sørnes : shdocvw: Make the addressbar in IE do something useful.

Alexandre Julliard julliard at winehq.org
Wed Jul 28 10:45:10 CDT 2010


Module: wine
Branch: master
Commit: 7833ca6bbb57dc60f49dccfd45e6c9dc1f9d065b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7833ca6bbb57dc60f49dccfd45e6c9dc1f9d065b

Author: Alexander Nicolaysen Sørnes <alex at thehandofagony.com>
Date:   Fri Jul  2 16:35:42 2010 +0200

shdocvw: Make the addressbar in IE do something useful.

---

 dlls/shdocvw/iexplore.c |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/dlls/shdocvw/iexplore.c b/dlls/shdocvw/iexplore.c
index e596c85..d81e8f1 100644
--- a/dlls/shdocvw/iexplore.c
+++ b/dlls/shdocvw/iexplore.c
@@ -168,6 +168,36 @@ static LRESULT iewnd_OnSize(InternetExplorer *This, INT width, INT height)
     return 0;
 }
 
+static LRESULT iewnd_OnNotify(InternetExplorer *This, WPARAM wparam, LPARAM lparam)
+{
+    NMHDR* hdr = (NMHDR*)lparam;
+
+    if(hdr->idFrom == IDC_BROWSE_ADDRESSBAR && hdr->code == CBEN_ENDEDITW)
+    {
+        NMCBEENDEDITW* info = (NMCBEENDEDITW*)lparam;
+
+        if(info->fChanged && info->iWhy == CBENF_RETURN && info->szText)
+        {
+            VARIANT vt;
+            HWND hwndEdit = (HWND)SendMessageW(hdr->hwndFrom, CBEM_GETEDITCONTROL, 0, 0);
+
+            V_VT(&vt) = VT_BSTR;
+            V_BSTR(&vt) = SysAllocString(info->szText);
+
+            IWebBrowser2_Navigate2(WEBBROWSER2(This), &vt, NULL, NULL, NULL, NULL);
+
+            SysFreeString(V_BSTR(&vt));
+
+            /* Clear the address bar, as we don't change it when
+               the user navigates to a new page */
+            SendMessageW(hwndEdit, WM_SETTEXT, 0, 0);
+            return 0;
+        }
+    }
+
+    return 0;
+}
+
 static LRESULT iewnd_OnDestroy(InternetExplorer *This)
 {
     TRACE("%p\n", This);
@@ -225,6 +255,8 @@ ie_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
         return iewnd_OnSize(This, LOWORD(lparam), HIWORD(lparam));
     case WM_COMMAND:
         return iewnd_OnCommand(This, hwnd, msg, wparam, lparam);
+    case WM_NOTIFY:
+        return iewnd_OnNotify(This, wparam, lparam);
     case WM_DOCHOSTTASK:
         return process_dochost_task(&This->doc_host, lparam);
     }




More information about the wine-cvs mailing list