]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/glcmn.cpp
To avoid error message, do not even try to set focus on MSW popup window that doesn...
[wxWidgets.git] / src / common / glcmn.cpp
index faa42827c15ab32fad333a3aabcb8c4de9eee148..4f5f9c60253197d53e5a0a7efbc1c18a764d8d05 100644 (file)
@@ -52,17 +52,17 @@ wxGLCanvasBase::wxGLCanvasBase()
     SetBackgroundStyle(wxBG_STYLE_CUSTOM);
 }
 
     SetBackgroundStyle(wxBG_STYLE_CUSTOM);
 }
 
-void wxGLCanvasBase::SetCurrent(const wxGLContext& context) const
+bool wxGLCanvasBase::SetCurrent(const wxGLContext& context) const
 {
     // although on MSW it works even if the window is still hidden, it doesn't
     // work in other ports (notably X11-based ones) and documentation mentions
     // that SetCurrent() can only be called for a shown window, so check for it
     wxASSERT_MSG( IsShownOnScreen(), _T("can't make hidden GL canvas current") );
 
 {
     // although on MSW it works even if the window is still hidden, it doesn't
     // work in other ports (notably X11-based ones) and documentation mentions
     // that SetCurrent() can only be called for a shown window, so check for it
     wxASSERT_MSG( IsShownOnScreen(), _T("can't make hidden GL canvas current") );
 
-    context.SetCurrent(*wx_static_cast(const wxGLCanvas *, this));
+    return context.SetCurrent(*static_cast<const wxGLCanvas *>(this));
 }
 
 }
 
-bool wxGLCanvasBase::SetColour(const wxChar *colour)
+bool wxGLCanvasBase::SetColour(const wxString& colour)
 {
     wxColour col = wxTheColourDatabase->Find(colour);
     if ( !col.Ok() )
 {
     wxColour col = wxTheColourDatabase->Find(colour);
     if ( !col.Ok() )
@@ -115,5 +115,32 @@ void wxGLCanvasBase::OnSize(wxSizeEvent& WXUNUSED(event))
 
 #endif // WXWIN_COMPATIBILITY_2_8
 
 
 #endif // WXWIN_COMPATIBILITY_2_8
 
+/* static */
+bool wxGLCanvasBase::IsExtensionInList(const char *list, const char *extension)
+{
+    if ( !list )
+        return false;
+
+    for ( const char *p = list; *p; p++ )
+    {
+        // advance up to the next possible match
+        p = wxStrstr(p, extension);
+        if ( !p )
+            break;
+
+        // check that the extension appears at the beginning/ending of the list
+        // or is preceded/followed by a space to avoid mistakenly finding
+        // "glExtension" in a list containing some "glFunkyglExtension"
+        if ( (p == list || p[-1] == ' ') )
+        {
+            char c = p[strlen(extension)];
+            if ( c == '\0' || c == ' ' )
+                return true;
+        }
+    }
+
+    return false;
+}
+
 #endif // wxUSE_GLCANVAS
 
 #endif // wxUSE_GLCANVAS