X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/527343602e91d60c65fb7589a6ddcf4683930c78..e408bf5257ead0754de5ef37a39867c7536dbe03:/src/common/artprov.cpp diff --git a/src/common/artprov.cpp b/src/common/artprov.cpp index bd79bb96e3..299c5a669f 100644 --- a/src/common/artprov.cpp +++ b/src/common/artprov.cpp @@ -160,7 +160,7 @@ wxArtProvider::~wxArtProvider() sm_providers->Insert(provider); } -/*static*/ void wxArtProvider::Insert(wxArtProvider *provider) +/*static*/ void wxArtProvider::PushBack(wxArtProvider *provider) { CommonAddingProvider(); sm_providers->Append(provider); @@ -303,10 +303,35 @@ wxArtProvider::~wxArtProvider() return icon; } -#if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__) - #include "wx/gtk/private.h" - extern GtkIconSize wxArtClientToIconSize(const wxArtClient& client); -#endif // defined(__WXGTK20__) && !defined(__WXUNIVERSAL__) +/* static */ +wxIcon wxArtProvider::GetMessageBoxIcon(int flags) +{ + wxIcon icon; + switch ( flags & wxICON_MASK ) + { + default: + wxFAIL_MSG(_T("incorrect message box icon flags")); + // fall through + + case wxICON_ERROR: + icon = wxArtProvider::GetIcon(wxART_ERROR, wxART_MESSAGE_BOX); + break; + + case wxICON_INFORMATION: + icon = wxArtProvider::GetIcon(wxART_INFORMATION, wxART_MESSAGE_BOX); + break; + + case wxICON_WARNING: + icon = wxArtProvider::GetIcon(wxART_WARNING, wxART_MESSAGE_BOX); + break; + + case wxICON_QUESTION: + icon = wxArtProvider::GetIcon(wxART_QUESTION, wxART_MESSAGE_BOX); + break; + } + + return icon; +} /*static*/ wxSize wxArtProvider::GetSizeHint(const wxArtClient& client, bool platform_dependent) @@ -318,34 +343,33 @@ wxArtProvider::~wxArtProvider() return node->GetData()->DoGetSizeHint(client); } - // else return platform dependent size - -#if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__) - // Gtk has specific sizes for each client, see artgtk.cpp - GtkIconSize gtk_size = wxArtClientToIconSize(client); - // no size hints for this client - if (gtk_size == GTK_ICON_SIZE_INVALID) - return wxDefaultSize; - gint width, height; - gtk_icon_size_lookup( gtk_size, &width, &height); - return wxSize(width, height); -#else // !GTK+ 2 - // NB: These size hints may have to be adjusted per platform - if (client == wxART_TOOLBAR) - return wxSize(16, 15); - else if (client == wxART_MENU) - return wxSize(16, 15); - else if (client == wxART_FRAME_ICON) - return wxSize(16, 15); - else if (client == wxART_CMN_DIALOG || client == wxART_MESSAGE_BOX) - return wxSize(32, 32); - else if (client == wxART_HELP_BROWSER) - return wxSize(16, 15); - else if (client == wxART_BUTTON) - return wxSize(16, 15); - else // wxART_OTHER or perhaps a user's client, no specified size - return wxDefaultSize; -#endif // GTK+ 2/else + return GetNativeSizeHint(client); +} + +#ifndef wxHAS_NATIVE_ART_PROVIDER_IMPL +/*static*/ +wxSize wxArtProvider::GetNativeSizeHint(const wxArtClient& WXUNUSED(client)) +{ + // rather than returning some arbitrary value that doesn't make much + // sense (as 2.8 used to do), tell the caller that we don't have a clue: + return wxDefaultSize; +} + +/*static*/ +void wxArtProvider::InitNativeProvider() +{ +} +#endif // !wxHAS_NATIVE_ART_PROVIDER_IMPL + + +/* static */ +bool wxArtProvider::HasNativeProvider() +{ +#ifdef __WXGTK20__ + return true; +#else + return false; +#endif } // ---------------------------------------------------------------------------- @@ -378,6 +402,13 @@ wxArtProvider::~wxArtProvider() #endif // WXWIN_COMPATIBILITY_2_6 +#if WXWIN_COMPATIBILITY_2_8 +/* static */ void wxArtProvider::Insert(wxArtProvider *provider) +{ + PushBack(provider); +} +#endif // WXWIN_COMPATIBILITY_2_8 + // ============================================================================ // wxArtProviderModule // ============================================================================