diff --git a/include/wx/gtk1/private/addremovectrl.h b/include/wx/gtk1/private/addremovectrl.h new file mode 100644 index 0000000000..bce4061df5 --- /dev/null +++ b/include/wx/gtk1/private/addremovectrl.h @@ -0,0 +1,80 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/gtk/private/addremovectrl.h +// Purpose: GTK specific wxAddRemoveImpl implementation +// Author: Vadim Zeitlin +// Created: 2015-02-05 +// Copyright: (c) 2015 Vadim Zeitlin +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_GTK_PRIVATE_ADDREMOVECTRL_H_ +#define _WX_GTK_PRIVATE_ADDREMOVECTRL_H_ + +#include "wx/artprov.h" +#include "wx/bmpbuttn.h" +#include "wx/toolbar.h" + +#include + +// ---------------------------------------------------------------------------- +// wxAddRemoveImpl +// ---------------------------------------------------------------------------- + +class wxAddRemoveImpl : public wxAddRemoveImplBase +{ +public: + wxAddRemoveImpl(wxAddRemoveAdaptor* adaptor, + wxAddRemoveCtrl* parent, + wxWindow* ctrlItems) + : wxAddRemoveImplBase(adaptor, parent, ctrlItems), + m_tbar(new wxToolBar(parent, wxID_ANY)) + { + m_tbar->AddTool(wxID_ADD, wxString(), GetNamedBitmap("list-add")); + m_tbar->AddTool(wxID_REMOVE, wxString(), GetNamedBitmap("list-remove")); + +#if defined(__WXGTK3__) && !defined(__WXUNIVERSAL__) + // Tweak the toolbar appearance to correspond to how the toolbars used + // in other GNOME applications for similar purposes look. + GtkToolbar* const toolbar = m_tbar->GTKGetToolbar(); + GtkStyleContext* context = gtk_widget_get_style_context(GTK_WIDGET(toolbar)); + gtk_style_context_add_class(context, GTK_STYLE_CLASS_INLINE_TOOLBAR); + gtk_style_context_set_junction_sides(context, GTK_JUNCTION_TOP); +#endif // GTK+3 + + wxSizer* const sizerTop = new wxBoxSizer(wxVERTICAL); + sizerTop->Add(ctrlItems, wxSizerFlags(1).Expand()); + sizerTop->Add(m_tbar, wxSizerFlags().Expand()); + parent->SetSizer(sizerTop); + + m_tbar->Bind(wxEVT_UPDATE_UI, + &wxAddRemoveImplBase::OnUpdateUIAdd, this, wxID_ADD); + m_tbar->Bind(wxEVT_UPDATE_UI, + &wxAddRemoveImplBase::OnUpdateUIRemove, this, wxID_REMOVE); + + m_tbar->Bind(wxEVT_TOOL, &wxAddRemoveImplBase::OnAdd, this, wxID_ADD); + m_tbar->Bind(wxEVT_TOOL, &wxAddRemoveImplBase::OnRemove, this, wxID_REMOVE); + } + + virtual void SetButtonsToolTips(const wxString& addtip, + const wxString& removetip) wxOVERRIDE + { + m_tbar->SetToolShortHelp(wxID_ADD, addtip); + m_tbar->SetToolShortHelp(wxID_REMOVE, removetip); + } + +private: + static wxBitmap GetNamedBitmap(const wxString& name) + { + // GTK UI guidelines recommend using "symbolic" versions of the icons + // for these buttons, so try them first but fall back to the normal + // ones if symbolic theme is not installed. + wxBitmap bmp = wxArtProvider::GetBitmap(name + "-symbolic", wxART_MENU); + if ( !bmp.IsOk() ) + bmp = wxArtProvider::GetBitmap(name, wxART_MENU); + return bmp; + } + + wxToolBar* const m_tbar; +}; + +#endif // _WX_GTK_PRIVATE_ADDREMOVECTRL_H_ diff --git a/include/wx/private/addremovectrl.h b/include/wx/private/addremovectrl.h index 19540e8df1..13a10ade02 100644 --- a/include/wx/private/addremovectrl.h +++ b/include/wx/private/addremovectrl.h @@ -145,8 +145,10 @@ protected: #ifdef __WXOSX__ #include "wx/osx/private/addremovectrl.h" -#elif defined(__WXGTK__) +#elif defined(__WXGTK20__) #include "wx/gtk/private/addremovectrl.h" +#elif defined(__WXGTK__) + #include "wx/gtk1/private/addremovectrl.h" #else #include "wx/generic/private/addremovectrl.h" #endif diff --git a/src/aui/dockart.cpp b/src/aui/dockart.cpp index 391d322efe..9cf66e43c7 100644 --- a/src/aui/dockart.cpp +++ b/src/aui/dockart.cpp @@ -43,7 +43,12 @@ #ifdef __WXGTK__ #include "wx/renderer.h" -#include "wx/gtk/private/wrapgtk.h" +#ifdef __WXGTK20__ + #include "wx/gtk/private/wrapgtk.h" +#else + #include + #define gtk_widget_is_drawable GTK_WIDGET_DRAWABLE +#endif #ifdef __WXGTK3__ #include "wx/graphics.h" #include "wx/gtk/private.h" diff --git a/src/common/popupcmn.cpp b/src/common/popupcmn.cpp index f05fc5e97c..e69ad0d2ad 100644 --- a/src/common/popupcmn.cpp +++ b/src/common/popupcmn.cpp @@ -41,8 +41,11 @@ #include "wx/scrolbar.h" #endif // __WXUNIVERSAL__ -#ifdef __WXGTK__ +#ifdef __WXGTK20__ #include "wx/gtk/private/wrapgtk.h" +#elif defined(__WXGTK__) + #include + #define gtk_widget_get_window(x) x->window #elif defined(__WXMSW__) #include "wx/msw/private.h" #elif defined(__WXX11__) diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index 729c51da67..bae186b759 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -103,13 +103,17 @@ #include "wx/msw/private.h" #endif -#if wxUSE_GUI && defined(__WXGTK__) - #include "wx/gtk/private/wrapgtk.h" // for GTK_XXX_VERSION constants +#if wxUSE_GUI + // Include the definitions of GTK_XXX_VERSION constants. + #ifdef __WXGTK20__ + #include "wx/gtk/private/wrapgtk.h" + #elif defined(__WXGTK__) + #include + #elif defined(__WXQT__) + #include // for QT_VERSION_STR constants + #endif #endif -#if wxUSE_GUI && defined(__WXQT__) - #include // for QT_VERSION_STR constants -#endif #if wxUSE_BASE // ============================================================================ diff --git a/src/generic/graphicc.cpp b/src/generic/graphicc.cpp index a1ad0dca9f..ddf2f94c52 100644 --- a/src/generic/graphicc.cpp +++ b/src/generic/graphicc.cpp @@ -83,7 +83,11 @@ using namespace std; #endif #ifdef __WXGTK__ +#ifdef __WXGTK20__ #include "wx/gtk/private/wrapgtk.h" +#else // GTK+ 1.x +#include +#endif #include "wx/fontutil.h" #ifndef __WXGTK3__ #include "wx/gtk/dc.h" diff --git a/src/unix/taskbarx11.cpp b/src/unix/taskbarx11.cpp index 0e608e89eb..f58590d519 100644 --- a/src/unix/taskbarx11.cpp +++ b/src/unix/taskbarx11.cpp @@ -64,7 +64,11 @@ // ---------------------------------------------------------------------------- #if defined(__WXGTK__) - #include "wx/gtk/private/wrapgtk.h" + #ifdef __WXGTK20__ + #include "wx/gtk/private/wrapgtk.h" + #else // GTK+ 1.x + #include + #endif #include #define GetDisplay() GDK_DISPLAY() #define GetXWindow(wxwin) GDK_WINDOW_XWINDOW((wxwin)->m_widget->window) diff --git a/src/unix/utilsx11.cpp b/src/unix/utilsx11.cpp index 8b9f37b831..d4f659df7c 100644 --- a/src/unix/utilsx11.cpp +++ b/src/unix/utilsx11.cpp @@ -37,7 +37,12 @@ #endif #ifdef __WXGTK__ +#ifdef __WXGTK20__ #include "wx/gtk/private/wrapgtk.h" +#else // GTK+ 1.x +#include +#define GDK_WINDOWING_X11 +#endif #ifdef GDK_WINDOWING_X11 #include #endif