]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/textentry.cpp
Initial work on virtual file system support for the WebKitGTK+ backend. It now suppor...
[wxWidgets.git] / src / msw / textentry.cpp
index 4d5b2785b0bb94acb28a35dde69a64544323d9a6..77bc4cd1bce5f890efbdfed2fadad128046e2d5d 100644 (file)
@@ -34,6 +34,8 @@
 #include "wx/textcompleter.h"
 #include "wx/dynlib.h"
 
+#include <initguid.h>
+
 #include "wx/msw/private.h"
 
 #if wxUSE_UXTHEME
 
 #include "wx/msw/ole/oleutils.h"
 #include <shldisp.h>
-#include <shobjidl.h>
 
 #if defined(__MINGW32__) || defined (__WATCOMC__) || defined(__CYGWIN__)
     // needed for IID_IAutoComplete, IID_IAutoComplete2 and ACO_AUTOSUGGEST
     #include <shlguid.h>
+
+    #ifndef ACO_AUTOAPPEND
+        #define ACO_AUTOAPPEND 0x02
+    #endif
 #endif
 
 #ifndef ACO_UPDOWNKEYDROPSLIST
     #define SHACF_FILESYS_ONLY 0x00000010
 #endif
 
-DEFINE_GUID(CLSID_AutoComplete,
-    0x00bb2763, 0x6a77, 0x11d0, 0xa5, 0x35, 0x00, 0xc0, 0x4f, 0xd7, 0xd0, 0x62);
-
 namespace
 {
 
+// Normally this interface and its IID are defined in shobjidl.h header file
+// included in the platform SDK but MinGW and Cygwin don't have it so redefine
+// the interface ourselves and, as long as we do it all, do it for all
+// compilers to ensure we have the same behaviour for all of them and to avoid
+// the need to check for concrete compilers and maybe even their versions.
+class IAutoCompleteDropDown : public IUnknown
+{
+public:
+    virtual HRESULT wxSTDCALL GetDropDownStatus(DWORD *, LPWSTR *) = 0;
+    virtual HRESULT wxSTDCALL ResetEnumerator() = 0;
+};
+
+DEFINE_GUID(wxIID_IAutoCompleteDropDown,
+    0x3cd141f4, 0x3c6a, 0x11d2, 0xbc, 0xaa, 0x00, 0xc0, 0x4f, 0xd9, 0x29, 0xdb);
+
+DEFINE_GUID(wxCLSID_AutoComplete,
+    0x00bb2763, 0x6a77, 0x11d0, 0xa5, 0x35, 0x00, 0xc0, 0x4f, 0xd7, 0xd0, 0x62);
+
 // Small helper class which can be used to ensure thread safety even when
 // wxUSE_THREADS==0 (and hence wxCriticalSection does nothing).
 class CSLock
@@ -349,7 +369,7 @@ public:
         // apparently.
         HRESULT hr = CoCreateInstance
                      (
-                        CLSID_AutoComplete,
+                        wxCLSID_AutoComplete,
                         NULL,
                         CLSCTX_INPROC_SERVER,
                         IID_IAutoComplete,
@@ -384,7 +404,7 @@ public:
         // provided IAutoComplete always implements IAutoCompleteDropDown too.
         hr = m_autoComplete->QueryInterface
                              (
-                               IID_IAutoCompleteDropDown,
+                               wxIID_IAutoCompleteDropDown,
                                reinterpret_cast<void **>(&m_autoCompleteDropDown)
                              );
         if ( FAILED(hr) )
@@ -494,27 +514,6 @@ public:
     }
 
 private:
-    // Trivial wxTextCompleter implementation which always returns the same
-    // fixed array of completions.
-    class wxTextCompleterFixed : public wxTextCompleterSimple
-    {
-    public:
-        void SetCompletions(const wxArrayString& strings)
-        {
-            m_strings = strings;
-        }
-
-        virtual void GetCompletions(const wxString& WXUNUSED(prefix),
-                                    wxArrayString& res)
-        {
-            res = m_strings;
-        }
-
-    private:
-        wxArrayString m_strings;
-    };
-
-
     // Must be called after changing the values to be returned by wxIEnumString
     // to really make the changes stick.
     void DoRefresh()
@@ -844,6 +843,11 @@ bool wxTextEntry::DoAutoCompleteStrings(const wxArrayString& choices)
     return wxTextEntryBase::DoAutoCompleteStrings(choices);
 }
 
+bool wxTextEntry::DoAutoCompleteCustom(wxTextCompleter *completer)
+{
+    return wxTextEntryBase::DoAutoCompleteCustom(completer);
+}
+
 #endif // HAS_AUTOCOMPLETE/!HAS_AUTOCOMPLETE
 
 #endif // wxUSE_OLE