[packages/perl-Wx] - add patches from fedora to build with gtk3 and wxWidgets 3.2 - rel 8
baggins
baggins at pld-linux.org
Sat Sep 30 12:23:28 CEST 2023
commit d909feeb4c385828023d4a60a3a89fdac405c522
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Sat Sep 30 11:21:20 2023 +0200
- add patches from fedora to build with gtk3 and wxWidgets 3.2
- rel 8
gtk3.patch | 29 ++
method-typo.patch | 11 -
perl-Wx.spec | 16 +-
wxWidgets_3.2_MakeMaker.patch | 124 +++++
wxWidgets_3.2_port.patch | 1117 +++++++++++++++++++++++++++++++++++++++++
5 files changed, 1282 insertions(+), 15 deletions(-)
---
diff --git a/perl-Wx.spec b/perl-Wx.spec
index 68371bf..ba82239 100644
--- a/perl-Wx.spec
+++ b/perl-Wx.spec
@@ -8,11 +8,12 @@
#
# Conditional build:
%bcond_without unicode # ANSI instead of Unicode version of wxGTK
-%bcond_with gtk3 # wxGTK3 instead of wxGTK2
+%bcond_without gtk3 # wxGTK3 instead of wxGTK2
%bcond_with tests # "make test" (requires $DISPLAY)
%define wxpkg wxGTK%{?with_gtk3:3}%{!?with_gtk3:2}%{?with_unicode:-unicode}
-%define wx_ver %(rpm -q wxWidgets-devel --qf '%%{VERSION}')
+%define wx_config wx-gtk%{?with_gtk3:3}%{!?with_gtk3:2}%{?with_unicode:-unicode}%{!?with_unicode:-ansi}-config
+%define wx_ver %(%{wx_config} --version)
%define wx_ver_tag %(echo %{wx_ver} | tr . _)
%define alien_wxcfg gtk%{!?with_gtk3:2}_%{wx_ver_tag}%{?with_unicode:_uni}_gcc_3_4
%define pdir Wx
@@ -20,14 +21,16 @@ Summary: wxPerl - a Perl wrapper for the wxWidgets C++ GUI toolkit
Summary(pl.UTF-8): wxPerl - wrapper toolkitu graficznego C++ wxWidgets dla Perla
Name: perl-Wx
Version: 0.9932
-Release: 7
+Release: 8
# same as perl
License: GPL v1+ or Artistic
Group: Development/Languages/Perl
Source0: http://www.cpan.org/modules/by-module/Wx/Wx-%{version}.tar.gz
# Source0-md5: 76f019b04fffec0fda06bf46b0e93046
Source1: perl-provides
-Patch0: method-typo.patch
+Patch0: gtk3.patch
+Patch1: wxWidgets_3.2_MakeMaker.patch
+Patch2: wxWidgets_3.2_port.patch
URL: http://wxperl.sourceforge.net/
BuildRequires: perl-Alien-wxWidgets >= 0.67
BuildRequires: perl-ExtUtils-MakeMaker >= 6.46
@@ -71,7 +74,12 @@ Pakiet do rozwijania oprogramowania przy użyciu wxPerla.
%prep
%setup -q -n Wx-%{version}
+
+%undos MANIFEST typemap
+
%patch0 -p1
+%patch1 -p1
+%patch2 -p1
%build
%{__perl} Makefile.PL \
diff --git a/gtk3.patch b/gtk3.patch
new file mode 100644
index 0000000..7d385bd
--- /dev/null
+++ b/gtk3.patch
@@ -0,0 +1,29 @@
+Description: Fixes for GTK3 compatibility
+ wxWidgets 3.0 built with GTK3 doesn't have wxColour::GetPixel(), see:
+ http://trac.wxwidgets.org/ticket/15141#comment:2
+Author: Olly Betts <olly at survex.com>
+Forwarded: no
+Last-Update: 2018-04-01
+
+--- a/XS/Colour.xs
++++ b/XS/Colour.xs
+@@ -114,7 +114,7 @@
+
+ #endif
+
+-#if !defined(__WXMAC__)
++#if !defined(__WXMAC__) && !defined (__WXGTK3__)
+
+ long
+ wxColour::GetPixel()
+--- a/ext/propgrid/XS/PGProperty.xsp
++++ b/ext/propgrid/XS/PGProperty.xsp
+@@ -1148,7 +1148,7 @@
+ bool SetPlValue( wxColour* col, int flags = wxPG_SETVAL_REFRESH_EDITOR )
+ %code{%
+ if( col->IsOk() ) {
+- wxVariant value = wxVariant(*col);
++ wxVariant value = wxVariant(wxAny(*col));
+ THIS->SetValue(value, NULL, flags );
+ RETVAL = true;
+ } else {
diff --git a/method-typo.patch b/method-typo.patch
deleted file mode 100644
index 6a4cf74..0000000
--- a/method-typo.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- Wx-0.9932/XS/PropertySheetDialog.xsp~ 2014-03-08 14:01:15.000000000 +0100
-+++ Wx-0.9932/XS/PropertySheetDialog.xsp 2017-06-12 11:59:36.149020034 +0200
-@@ -49,7 +49,7 @@
- void SetBookCtrl( wxBookCtrlBase* book );
- wxBookCtrlBase* GetBookCtrl() const;
-
-- void SetInnerSize( wxSizer* sizer );
-+ void SetInnerSizer( wxSizer* sizer );
- wxSizer* GetInnerSizer() const;
-
- #if WXPERL_W_VERSION_GE( 2, 7, 2 )
diff --git a/wxWidgets_3.2_MakeMaker.patch b/wxWidgets_3.2_MakeMaker.patch
new file mode 100644
index 0000000..ef827e6
--- /dev/null
+++ b/wxWidgets_3.2_MakeMaker.patch
@@ -0,0 +1,124 @@
+Description: remove reference to adv lib
+ The build fails with
+ No such 'link' library: 'adv' at /build/libwx-perl-0.9932/build/Wx/build/MakeMaker.pm line 212.
+ And https://raw.githubusercontent.com/wxWidgets/wxWidgets/v3.2.0/docs/changes.txt says for 3.1.2
+ - wxAdvanced library was merged into wxCore, simply remove all references
+ to "adv" from your build system, it is not needed any longer.
+Origin: vendor
+Author: gregor herrmann <gregoa at debian.org>
+Last-Update: 2022-09-15
+
+--- a/Makefile.PL
++++ b/Makefile.PL
+@@ -86,7 +86,7 @@
+ PMLIBDIRS => [ 'lib', 'build' ],
+ EXE_FILES => [ qw(script/wxperl_overload) ],
+ WX_CORE_LIB_MAYBE => $^O eq 'darwin' ? 'media html' : '',
+- WX_CORE_LIB => 'adv core base',
++ WX_CORE_LIB => 'core base',
+ WX_OVERLOAD => { header => 'cpp/ovl_const.h',
+ source => 'cpp/ovl_const.cpp',
+ },
+--- a/build/Wx/build/MakeMaker.pm
++++ b/build/Wx/build/MakeMaker.pm
+@@ -48,7 +48,7 @@
+ WX_CORE_LIB => 'xrc core base'
+
+ link libraries from wxWidgets' core or contrib directory.
+-If not spedified, defaults to 'adv html core net base' for compatibility.
++If not spedified, defaults to 'html core net base' for compatibility.
+
+ =item * WX_LIB
+
+@@ -362,7 +362,7 @@
+
+ $args{CCFLAGS} .= $options{extra_cflags} ? ' ' . $options{extra_cflags} : '';
+ $args{LIBS} .= $options{extra_libs} ? ' ' . $options{extra_libs} : '';
+- $args{WX_CORE_LIB} ||= 'adv html core net base';
++ $args{WX_CORE_LIB} ||= 'html core net base';
+
+ foreach ( keys %args ) {
+ my $v = $args{$_};
+--- a/ext/aui/Makefile.PL
++++ b/ext/aui/Makefile.PL
+@@ -19,5 +19,5 @@
+ wxWriteMakefile( NAME => 'Wx::AUI',
+ VERSION_FROM => 'lib/Wx/AUI.pm',
+ REQUIRE_WX => 2.007002,
+- WX_CORE_LIB => 'aui adv core base',
++ WX_CORE_LIB => 'aui core base',
+ );
+--- a/ext/calendar/Makefile.PL
++++ b/ext/calendar/Makefile.PL
+@@ -18,7 +18,7 @@
+
+ wxWriteMakefile( NAME => 'Wx::Calendar',
+ VERSION_FROM => 'Calendar.pm',
+- WX_CORE_LIB => 'adv core base',
++ WX_CORE_LIB => 'core base',
+ );
+
+ # local variables:
+--- a/ext/dataview/Makefile.PL
++++ b/ext/dataview/Makefile.PL
+@@ -19,5 +19,5 @@
+ wxWriteMakefile( NAME => 'Wx::DataView',
+ VERSION_FROM => 'DataView.pm',
+ REQUIRE_WX => 2.009000,
+- WX_CORE_LIB => 'adv core base',
++ WX_CORE_LIB => 'core base',
+ );
+--- a/ext/grid/Makefile.PL
++++ b/ext/grid/Makefile.PL
+@@ -16,7 +16,7 @@
+
+ wxWriteMakefile( NAME => 'Wx::Grid',
+ VERSION_FROM => 'lib/Wx/Grid.pm',
+- WX_CORE_LIB => 'adv core base',
++ WX_CORE_LIB => 'core base',
+ );
+
+ # local variables:
+--- a/ext/propgrid/Makefile.PL
++++ b/ext/propgrid/Makefile.PL
+@@ -19,7 +19,7 @@
+ wxWriteMakefile( NAME => 'Wx::PropertyGrid',
+ VERSION_FROM => 'lib/Wx/PropertyGrid.pm',
+ REQUIRE_WX => 2.009003,
+- WX_CORE_LIB => 'propgrid adv core base',
++ WX_CORE_LIB => 'propgrid core base',
+ REQUIRE_WX_LIB => 'propgrid',
+ NO_WX_PLATFORMS => [ ],
+ );
+\ No newline at end of file
+--- a/ext/ribbon/Makefile.PL
++++ b/ext/ribbon/Makefile.PL
+@@ -19,7 +19,7 @@
+ wxWriteMakefile( NAME => 'Wx::Ribbon',
+ VERSION_FROM => 'lib/Wx/Ribbon.pm',
+ REQUIRE_WX => 2.009003,
+- WX_CORE_LIB => 'ribbon adv core base',
++ WX_CORE_LIB => 'ribbon core base',
+ REQUIRE_WX_LIB => 'ribbon',
+ NO_WX_PLATFORMS => [ ],
+ );
+--- a/ext/richtext/Makefile.PL
++++ b/ext/richtext/Makefile.PL
+@@ -19,5 +19,5 @@
+ wxWriteMakefile( NAME => 'Wx::RichText',
+ VERSION_FROM => 'lib/Wx/RichText.pm',
+ REQUIRE_WX => 2.007000,
+- WX_CORE_LIB => 'richtext html xml adv core base',
++ WX_CORE_LIB => 'richtext html xml core base',
+ );
+--- a/ext/xrc/Makefile.PL
++++ b/ext/xrc/Makefile.PL
+@@ -16,7 +16,7 @@
+
+ wxWriteMakefile( NAME => 'Wx::XRC',
+ VERSION_FROM => 'lib/Wx/XRC.pm',
+- WX_CORE_LIB => 'xrc xml html adv core base',
++ WX_CORE_LIB => 'xrc xml html core base',
+ );
+
+ # local variables:
diff --git a/wxWidgets_3.2_port.patch b/wxWidgets_3.2_port.patch
new file mode 100644
index 0000000..a385a8f
--- /dev/null
+++ b/wxWidgets_3.2_port.patch
@@ -0,0 +1,1117 @@
+Description: Port wxPerl to wxWidgets 3.2
+Author: Scott Talbert <swt at techie.net>
+Last-Update: 2023-01-04
+
+--- a/Constant.xs
++++ b/Constant.xs
+@@ -2034,7 +2034,6 @@ static double constant( const char* name
+ r( wxLeftOf ); // layout constraints
+
+ r( wxLOCALE_LOAD_DEFAULT ); // locale
+- r( wxLOCALE_CONV_ENCODING ); // locale
+
+ #if WXPERL_W_VERSION_GE( 2, 7, 1 )
+ r( wxLayout_Default );
+@@ -2357,7 +2356,6 @@ static double constant( const char* name
+ #endif
+ r( wxNB_DEFAULT ); // notebook
+ #if WXPERL_W_VERSION_GE( 2, 6, 0 )
+- r( wxNB_FLAT ); // notebook
+ r( wxNB_NOPAGETHEME ); // notebook
+ #endif
+
+@@ -2784,7 +2782,6 @@ static double constant( const char* name
+ r( wxTB_DOCKABLE ); // toolbar
+ r( wxTB_HORIZONTAL ); // toolbar
+ r( wxTB_VERTICAL ); // toolbar
+- r( wxTB_3DBUTTONS ); // toolbar
+ r( wxTB_TEXT ); // toolbar
+ r( wxTB_NOICONS ); // toolbar
+ #if WXPERL_W_VERSION_GE( 2, 5, 1 )
+@@ -2885,8 +2882,6 @@ static double constant( const char* name
+ r( wxTEXT_TYPE_ANY ); // textctrl
+ #endif
+
+- r( wxTINY_CAPTION_HORIZ ); // miniframe
+- r( wxTINY_CAPTION_VERT ); // miniframe
+ r( wxTIMER_CONTINUOUS ); // timer
+ r( wxTIMER_ONE_SHOT ); // timer
+ r( wxTOP ); // sizer layout constraints
+--- a/XS/Locale.xs
++++ b/XS/Locale.xs
+@@ -93,12 +93,11 @@ MODULE=Wx PACKAGE=Wx::Locale
+ #endif
+
+ wxLocale*
+-newLong( name, shorts = NULL, locale = NULL, loaddefault = true, convertencoding = wxPL_LOCALE_CONVERT_ENCODING )
++newLong( name, shorts = NULL, locale = NULL, loaddefault = true )
+ const wxChar* name
+ const wxChar* shorts = NO_INIT
+ const wxChar* locale = NO_INIT
+ bool loaddefault
+- bool convertencoding
+ CODE:
+ wxString shorts_tmp, locale_tmp;
+
+@@ -118,7 +117,7 @@ newLong( name, shorts = NULL, locale = N
+
+ RETVAL = new wxLocale( name, shorts,
+ ( locale && wxStrlen( locale ) ) ? locale : NULL,
+- loaddefault, convertencoding );
++ loaddefault );
+ OUTPUT:
+ RETVAL
+
+@@ -245,7 +244,7 @@ FindLanguageInfo( name )
+ wxPli_object_set_deleteable( aTHX_ ST(0), false );
+
+ bool
+-wxLocale::Init( language, flags = wxLOCALE_LOAD_DEFAULT|wxLOCALE_CONV_ENCODING )
++wxLocale::Init( language, flags = wxLOCALE_LOAD_DEFAULT )
+ int language
+ int flags
+
+--- a/ext/html/XS/HtmlDCRenderer.xs
++++ b/ext/html/XS/HtmlDCRenderer.xs
+@@ -66,13 +66,11 @@ wxHtmlDCRenderer::SetFonts( normal_face,
+
+ #if WXPERL_W_VERSION_GE( 2, 7, 0 )
+
+-int
+-wxHtmlDCRenderer::Render(x, y, pagebreaks, from = 0, dont_render = 0, to = INT_MAX)
++void
++wxHtmlDCRenderer::Render(x, y, from = 0, to = INT_MAX)
+ int x
+ int y
+- wxArrayInt pagebreaks
+ int from
+- int dont_render
+ int to
+
+ #else
+--- a/ext/stc/XS/StyledTextCtrl.xsp
++++ b/ext/stc/XS/StyledTextCtrl.xsp
+@@ -1599,8 +1599,6 @@ wxStyledTextCtrl::AppendTextRaw( text, l
+ void SetFirstVisibleLine(int lineDisplay);
+ void CopyAllowLine();
+ const char* GetCharacterPointer();
+- void SetKeysUnicode(bool keysUnicode);
+- bool GetKeysUnicode() const;
+ void IndicatorSetAlpha(int indicator, int alpha);
+ int IndicatorGetAlpha(int indicator) const;
+ void SetExtraAscent(int extraAscent);
+--- a/ext/stc/cpp/st_constants.cpp
++++ b/ext/stc/cpp/st_constants.cpp
+@@ -29,7 +29,7 @@ double stc_constant( const char* name, i
+ switch( fl )
+ {
+ case '4':
+-#if WXPERL_W_VERSION_GE( 2, 9, 0 )
++#if WXPERL_W_VERSION_GE( 2, 9, 0 ) && WXPERL_W_VERSION_LE( 3, 1, 0)
+ r( wxSTC_4GL_BLOCK );
+ r( wxSTC_4GL_BLOCK_ );
+ r( wxSTC_4GL_CHARACTER );
+@@ -309,7 +309,6 @@ double stc_constant( const char* name, i
+ r( wxSTC_COFFEESCRIPT_GLOBALCLASS );
+ r( wxSTC_COFFEESCRIPT_STRINGRAW );
+ r( wxSTC_COFFEESCRIPT_TRIPLEVERBATIM );
+- r( wxSTC_COFFEESCRIPT_HASHQUOTEDSTRING );
+ r( wxSTC_COFFEESCRIPT_COMMENTBLOCK );
+ r( wxSTC_COFFEESCRIPT_VERBOSE_REGEX );
+ r( wxSTC_COFFEESCRIPT_VERBOSE_REGEX_COMMENT );
+--- a/ext/dataview/XS/DataViewEvent.xsp
++++ b/ext/dataview/XS/DataViewEvent.xsp
+@@ -17,8 +17,6 @@
+ %module{Wx};
+
+ %name{Wx::DataViewEvent} class wxDataViewEvent {
+- wxDataViewEvent( wxEventType type, wxWindowID id );
+-
+ wxDataViewItem& GetItem() const;
+ void SetItem( const wxDataViewItem& item );
+
+--- a/Event.xs
++++ b/Event.xs
+@@ -791,12 +791,6 @@ wxNotifyEvent::Veto()
+ void
+ wxNotifyEvent::Allow()
+
+-MODULE=Wx_Evt PACKAGE=Wx::PaintEvent
+-
+-wxPaintEvent*
+-wxPaintEvent::new( id = 0 )
+- wxWindowID id
+-
+ MODULE=Wx_Evt PACKAGE=Wx::SizeEvent
+
+ wxSizeEvent*
+--- a/ext/docview/XS/DocManager.xs
++++ b/ext/docview/XS/DocManager.xs
+@@ -14,7 +14,7 @@
+ MODULE=Wx PACKAGE=Wx::DocManager
+
+ wxDocManager*
+-wxDocManager::new( flags = wxDEFAULT_DOCMAN_FLAGS, initialize = true )
++wxDocManager::new( flags = 0, initialize = true )
+ long flags
+ bool initialize
+ CODE:
+@@ -454,4 +454,4 @@ wxDocManager::ActivateView( view, activa
+ bool activate
+ bool deleting
+
+-#endif
+\ No newline at end of file
++#endif
+--- a/ext/docview/cpp/docview.h
++++ b/ext/docview/cpp/docview.h
+@@ -644,7 +644,7 @@ class wxPliDocManager : public wxDocMana
+ WXPLI_DECLARE_DYNAMIC_CLASS( wxPliDocManager );
+ WXPLI_DECLARE_V_CBACK();
+ public:
+- wxPliDocManager( const char* package, long flags = wxDEFAULT_DOCMAN_FLAGS,
++ wxPliDocManager( const char* package, long flags = 0,
+ bool initialize = true)
+ : wxDocManager(flags, initialize),
+ m_callback( "Wx::DocManager" )
+--- a/ext/docview/cpp/dv_constants.cpp
++++ b/ext/docview/cpp/dv_constants.cpp
+@@ -30,9 +30,6 @@ double docview_constant( const char* nam
+ {
+ case 'D':
+ r( wxDEFAULT_TEMPLATE_FLAGS );
+- r( wxDEFAULT_DOCMAN_FLAGS );
+- r( wxDOC_SDI );
+- r( wxDOC_MDI );
+ r( wxDOC_NEW );
+ r( wxDOC_SILENT );
+ break;
+--- a/XS/PropertySheetDialog.xsp
++++ b/XS/PropertySheetDialog.xsp
+@@ -49,7 +49,7 @@
+ void SetBookCtrl( wxBookCtrlBase* book );
+ wxBookCtrlBase* GetBookCtrl() const;
+
+- void SetInnerSize( wxSizer* sizer );
++ void SetInnerSizer( wxSizer* sizer );
+ wxSizer* GetInnerSizer() const;
+
+ #if WXPERL_W_VERSION_GE( 2, 7, 2 )
+--- a/XS/SingleChoiceDialog.xs
++++ b/XS/SingleChoiceDialog.xs
+@@ -56,21 +56,6 @@ wxSingleChoiceDialog::new( parent, messa
+ int
+ wxSingleChoiceDialog::GetSelection()
+
+-SV*
+-wxSingleChoiceDialog::GetSelectionClientData()
+- PREINIT:
+- char* t;
+- CODE:
+- t = THIS->GetSelectionClientData();
+- RETVAL = &PL_sv_undef;
+- if( t )
+- {
+- RETVAL = (SV*)t;
+- }
+- SvREFCNT_inc( RETVAL );
+- OUTPUT:
+- RETVAL
+-
+ wxString
+ wxSingleChoiceDialog::GetStringSelection()
+
+--- a/cpp/singlechoicedialog.h
++++ b/cpp/singlechoicedialog.h
+@@ -30,7 +30,7 @@ inline wxPliSingleChoiceDialog::wxPliSin
+ int n, const wxString* choices, SV** clientdata, long style,
+ const wxPoint& pos )
+ :wxSingleChoiceDialog( parent, message, caption, n, choices,
+- (char**)clientdata, style, pos ),
++ (void**)clientdata, style, pos ),
+ m_data(0)
+ {
+ dTHX;
+--- a/XS/GraphicsRenderer.xsp
++++ b/XS/GraphicsRenderer.xsp
+@@ -134,7 +134,7 @@ CreateContext( ... )
+ const wxGraphicsMatrix& CreateMatrix( wxDouble a=1.0, wxDouble b=0.0,
+ wxDouble c=0.0, wxDouble d=1.0,
+ wxDouble tx=0.0, wxDouble ty=0.0 );
+- const wxGraphicsPen& CreatePen( const wxPen& pen );
++## const wxGraphicsPen& CreatePen( const wxGraphicsPenInfo& info );
+ const wxGraphicsBrush& CreateBrush( const wxBrush& brush );
+
+ #if WXPERL_W_VERSION_LT( 2, 9, 1 )
+--- a/ext/propgrid/PropertyGrid.xs
++++ b/ext/propgrid/PropertyGrid.xs
+@@ -88,12 +88,6 @@ _get_wxPG_ATTR_HINT()
+ OUTPUT: RETVAL
+
+ wxString
+-_get_wxPG_ATTR_INLINE_HELP()
+- CODE:
+- RETVAL = wxPG_ATTR_INLINE_HELP;
+- OUTPUT: RETVAL
+-
+-wxString
+ _get_wxPG_ATTR_DEFAULT_VALUE()
+ CODE:
+ RETVAL = wxPG_ATTR_DEFAULT_VALUE;
+--- a/ext/propgrid/XS/PGCell.xsp
++++ b/ext/propgrid/XS/PGCell.xsp
+@@ -59,7 +59,7 @@ public:
+ void SetBgCol( const wxColour& col );
+
+ const wxString& GetText() const;
+- const wxBitmap& GetBitmap() const;
++ const wxBitmapBundle& GetBitmap() const;
+ const wxColour& GetFgCol() const;
+
+ const wxFont& GetFont() const;
+--- a/ext/propgrid/XS/PGCellRenderer.xsp
++++ b/ext/propgrid/XS/PGCellRenderer.xsp
+@@ -59,6 +59,7 @@ public:
+
+ int PreDrawCell( wxDC& dc,
+ const wxRect& rect,
++ const wxPropertyGrid* propGrid,
+ const wxPGCell& cell,
+ int flags ) const;
+
+--- a/ext/propgrid/XS/PGEditor.xsp
++++ b/ext/propgrid/XS/PGEditor.xsp
+@@ -28,9 +28,7 @@ wxPGWindowList::CLONE()
+ %}
+
+ public:
+- %name{newDefault} wxPGWindowList() %Overload;
+- %name{newOneWindow} wxPGWindowList( wxWindow* a ) %Overload;
+- %name{newTwoWindows} wxPGWindowList( wxWindow* a, wxWindow* b ) %Overload;
++ wxPGWindowList( wxWindow* a, wxWindow* b = NULL);
+
+ ~wxPGWindowList()
+ %code%{ wxPli_thread_sv_unregister( aTHX_ "Wx::PGWindowList", THIS, ST(0) );
+--- a/ext/propgrid/XS/PGProperty.xsp
++++ b/ext/propgrid/XS/PGProperty.xsp
+@@ -330,7 +330,28 @@ public:
+
+ };
+
+-%name{Wx::IntProperty} class wxIntProperty : public %name{Wx::PGProperty} wxPGProperty
++%name{Wx::NumericProperty} class wxNumericProperty : public %name{Wx::PGProperty} wxPGProperty
++{
++public:
++ /* virtual ~wxNumericProperty(); */
++
++ virtual bool DoSetAttribute(const wxString& name, wxVariant& value);
++
++ virtual wxVariant AddSpinStepValue(long stepScale) const = 0;
++
++ bool UseSpinMotion() const;
++
++protected:
++ wxNumericProperty(const wxString& label, const wxString& name);
++
++ wxVariant m_minVal;
++ wxVariant m_maxVal;
++ bool m_spinMotion;
++ wxVariant m_spinStep;
++ bool m_spinWrap;
++};
++
++%name{Wx::IntProperty} class wxIntProperty : public %name{Wx::NumericProperty} wxNumericProperty
+ {
+
+ public:
+@@ -363,7 +384,7 @@ public:
+ };
+
+
+-%name{Wx::UIntProperty} class wxUIntProperty : public %name{Wx::PGProperty} wxPGProperty
++%name{Wx::UIntProperty} class wxUIntProperty : public %name{Wx::NumericProperty} wxNumericProperty
+ {
+
+ public:
+@@ -404,7 +425,7 @@ public:
+ /************** End wxPerl Methods ***********************************************/
+ };
+
+-%name{Wx::FloatProperty} class wxFloatProperty : public %name{Wx::PGProperty} wxPGProperty
++%name{Wx::FloatProperty} class wxFloatProperty : public %name{Wx::NumericProperty} wxNumericProperty
+ {
+
+ public:
+@@ -664,14 +685,24 @@ protected:
+ };
+
+
+-%name{Wx::PGFileDialogAdapter} class wxPGFileDialogAdapter : public %name{Wx::PGEditorDialogAdapter} wxPGEditorDialogAdapter
++%name{Wx::EditorDialogProperty} class wxEditorDialogProperty : public %name{Wx::PGProperty} wxPGProperty
+ {
+ public:
+- virtual bool DoShowDialog( wxPropertyGrid* propGrid,
+- wxPGProperty* property );
++ /* virtual ~wxEditorDialogProperty(); */
++
++ virtual wxPGEditorDialogAdapter* GetEditorDialog() const;
++ virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
++
++protected:
++ wxEditorDialogProperty(const wxString& label, const wxString& name);
++
++ virtual bool DisplayEditorDialog(wxPropertyGrid* pg, wxVariant& value) = 0;
++
++ wxString m_dlgTitle;
++ long m_dlgStyle;
+ };
+
+-%name{Wx::FileProperty} class wxFileProperty : public %name{Wx::PGProperty} wxPGProperty
++%name{Wx::FileProperty} class wxFileProperty : public %name{Wx::EditorDialogProperty} wxEditorDialogProperty
+ {
+
+ public:
+@@ -711,14 +742,7 @@ public:
+
+ };
+
+-%name{Wx::PGLongStringDialogAdapter} class wxPGLongStringDialogAdapter : public %name{Wx::PGEditorDialogAdapter} wxPGEditorDialogAdapter
+-{
+-public:
+- virtual bool DoShowDialog( wxPropertyGrid* propGrid,
+- wxPGProperty* property );
+-};
+-
+-%name{Wx::LongStringProperty} class wxLongStringProperty : public %name{Wx::PGProperty} wxPGProperty
++%name{Wx::LongStringProperty} class wxLongStringProperty : public %name{Wx::EditorDialogProperty} wxEditorDialogProperty
+ {
+
+ public:
+@@ -734,15 +758,6 @@ public:
+ virtual bool OnEvent( wxPropertyGrid* propgrid,
+ wxWindow* primary, wxEvent& event );
+
+- // Shows string editor dialog. Value to be edited should be read from
+- // value, and if dialog is not cancelled, it should be stored back and true
+- // should be returned if that was the case.
+- virtual bool OnButtonClick( wxPropertyGrid* propgrid, wxString& value );
+-
+- static bool DisplayEditorDialog( wxPGProperty* prop,
+- wxPropertyGrid* propGrid,
+- wxString& value );
+-
+ /************** Begin wxPerl Methods ***********************************************/
+
+ wxString GetPlValue( int flags = wxPG_FULL_VALUE )
+@@ -754,7 +769,7 @@ public:
+ /************** End wxPerl Methods ***********************************************/
+ };
+
+-%name{Wx::DirProperty} class wxDirProperty : public %name{Wx::LongStringProperty} wxLongStringProperty
++%name{Wx::DirProperty} class wxDirProperty : public %name{Wx::EditorDialogProperty} wxEditorDialogProperty
+ {
+
+ public:
+@@ -765,8 +780,6 @@ public:
+ virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
+ virtual wxValidator* DoGetValidator() const;
+
+- virtual bool OnButtonClick ( wxPropertyGrid* propGrid, wxString& value );
+-
+ /************** Begin wxPerl Methods ***********************************************/
+
+ wxString GetPlValue( int flags = wxPG_FULL_VALUE )
+@@ -779,7 +792,7 @@ public:
+
+ };
+
+-%name{Wx::ArrayStringProperty} class wxArrayStringProperty : public %name{Wx::PGProperty} wxPGProperty
++%name{Wx::ArrayStringProperty} class wxArrayStringProperty : public %name{Wx::EditorDialogProperty} wxEditorDialogProperty
+ {
+
+ public:
+@@ -1012,7 +1025,7 @@ public:
+ #include "wx/image.h"
+ #endif
+
+-%name{Wx::FontProperty} class wxFontProperty : public %name{Wx::PGProperty} wxPGProperty
++%name{Wx::FontProperty} class wxFontProperty : public %name{Wx::EditorDialogProperty} wxEditorDialogProperty
+ {
+
+ public:
+@@ -1195,7 +1208,7 @@ public:
+
+ #if wxUSE_IMAGE
+
+-%name{Wx::ImageFileProperty} class wxImageFileProperty : public %name{Wx::FileProperty} wxFileProperty
++%name{Wx::ImageFileProperty} class wxImageFileProperty : public %name{Wx::EditorDialogProperty} wxEditorDialogProperty
+ {
+
+ public:
+@@ -1227,7 +1240,7 @@ public:
+
+ #if wxUSE_CHOICEDLG
+
+-%name{Wx::MultiChoiceProperty} class wxMultiChoiceProperty : public %name{Wx::PGProperty} wxPGProperty
++%name{Wx::MultiChoiceProperty} class wxMultiChoiceProperty : public %name{Wx::EditorDialogProperty} wxEditorDialogProperty
+ {
+
+ public:
+--- a/ext/propgrid/XS/PropertyGridManager.xsp
++++ b/ext/propgrid/XS/PropertyGridManager.xsp
+@@ -100,8 +100,6 @@ public:
+ /** Synonyme for GetSelectedPage. */
+ wxPGProperty__parsed_nodelete* GetSelection() const;
+
+- wxToolBar* GetToolBar() const;
+-
+ virtual wxPropertyGridPage* InsertPage( int index, const wxString& label,
+ const wxBitmap& bmp = wxNullBitmapPtr,
+ wxPropertyGridPage* pageObj = NULL );
+--- a/ext/propgrid/typemap
++++ b/ext/propgrid/typemap
+@@ -62,6 +62,8 @@ wxPGInDialogValidator * O_NON_WXOBJEC
+
+ wxNumericPropertyValidator * O_WXOBJECT
+
++wxEditorDialogProperty * O_WXOBJECT_THR
++wxNumericProperty * O_WXOBJECT_THR
+ wxStringProperty * O_WXOBJECT_THR
+ wxIntProperty * O_WXOBJECT_THR
+ wxUIntProperty * O_WXOBJECT_THR
+@@ -75,9 +77,6 @@ wxLongStringProperty * O_WXOBJECT_
+ wxDirProperty * O_WXOBJECT_THR
+ wxArrayStringProperty * O_WXOBJECT_THR
+
+-wxPGFileDialogAdapter * O_NON_WXOBJECT_THR
+-wxPGLongStringDialogAdapter * O_NON_WXOBJECT_THR
+-
+ wxPGArrayEditorDialog * O_WXEVTHANDLER
+ wxPGArrayStringEditorDialog * O_WXEVTHANDLER
+
+--- a/ext/propgrid/typemap.xsp
++++ b/ext/propgrid/typemap.xsp
+@@ -80,6 +80,8 @@
+
+ %typemap{wxNumericPropertyValidator*}{simple};
+
++%typemap{wxEditorDialogProperty*}{simple};
++%typemap{wxNumericProperty*}{simple};
+ %typemap{wxIntProperty*}{simple};
+ %typemap{wxUIntProperty*}{simple};
+ %typemap{wxFloatProperty*}{simple};
+@@ -92,9 +94,6 @@
+ %typemap{wxDirProperty*}{simple};
+ %typemap{wxArrayStringProperty*}{simple};
+
+-%typemap{wxPGFileDialogAdapter*}{simple};
+-%typemap{wxPGLongStringDialogAdapter*}{simple};
+-
+ %typemap{wxPGArrayEditorDialog*}{simple};
+ %typemap{wxPlPGArrayEditorDialog*}{simple};
+ %typemap{wxPGArrayStringEditorDialog*}{simple};
+--- a/XS/Slider.xs
++++ b/XS/Slider.xs
+@@ -111,11 +111,6 @@ wxSlider::SetRange( minValue, maxValue )
+ int maxValue
+
+ void
+-wxSlider::SetTickFreq( n, pos )
+- int n
+- int pos
+-
+-void
+ wxSlider::SetLineSize( lineSize )
+ int lineSize
+
+--- a/ext/grid/XS/Grid.xs
++++ b/ext/grid/XS/Grid.xs
+@@ -170,9 +170,6 @@ wxGrid::BlockToDeviceRect( topLeft, bott
+ OUTPUT:
+ RETVAL
+
+-bool
+-wxGrid::CanDragColSize()
+-
+ #if WXPERL_W_VERSION_GE( 2, 7, 2 )
+
+ bool
+@@ -181,9 +178,6 @@ wxGrid::CanDragColMove()
+ #endif
+
+ bool
+-wxGrid::CanDragRowSize()
+-
+-bool
+ wxGrid::CanDragGridSize()
+
+ bool
+@@ -671,9 +665,6 @@ wxGrid::GetSelectionForeground()
+ wxGridSelectionModes
+ wxGrid::GetSelectionMode()
+
+-int
+-wxGrid::GetViewWidth()
+-
+ void
+ wxGrid::HideCellEditControl()
+
+--- a/cpp/helpers.cpp
++++ b/cpp/helpers.cpp
+@@ -405,6 +405,25 @@ SV* wxPli_clientdatacontainer_2_sv( pTHX
+ return wxPli_non_object_2_sv( aTHX_ var, cdc, klass );
+ }
+
++SV* wxPli_sharedclientdatacontainer_2_sv( pTHX_ SV* var, wxSharedClientDataContainer* scdc, const char* klass )
++{
++ if( scdc == NULL )
++ {
++ sv_setsv( var, &PL_sv_undef );
++ return var;
++ }
++
++ wxPliUserDataCD* clientData = (wxPliUserDataCD*) scdc->GetClientObject();
++
++ if( clientData != NULL )
++ {
++ SvSetSV_nosteal( var, clientData->GetData() );
++ return var;
++ }
++
++ return wxPli_non_object_2_sv( aTHX_ var, scdc, klass );
++}
++
+ SV* wxPli_object_2_scalarsv( pTHX_ SV* var, const wxObject* object )
+ {
+ wxClassInfo *ci = object->GetClassInfo();
+--- a/cpp/helpers.h
++++ b/cpp/helpers.h
+@@ -35,6 +35,7 @@ class WXDLLIMPEXP_FWD_CORE wxInputStream
+ class WXDLLIMPEXP_FWD_CORE wxOutputStream;
+ class WXDLLIMPEXP_FWD_CORE wxEvtHandler;
+ class WXDLLIMPEXP_FWD_CORE wxClientDataContainer;
++class WXDLLIMPEXP_FWD_CORE wxSharedClientDataContainer;
+ class WXDLLIMPEXP_FWD_CORE wxPoint2DDouble;
+ typedef wxInputStream Wx_InputStream;
+ typedef wxOutputStream Wx_OutputStream;
+@@ -236,6 +237,9 @@ SV* FUNCPTR( wxPli_object_2_sv )( pTHX_
+ SV* FUNCPTR( wxPli_clientdatacontainer_2_sv )( pTHX_ SV* var,
+ wxClientDataContainer* cdc,
+ const char* klass );
++SV* FUNCPTR( wxPli_sharedclientdatacontainer_2_sv )( pTHX_ SV* var,
++ wxSharedClientDataContainer* scdc,
++ const char* klass );
+ SV* FUNCPTR( wxPli_evthandler_2_sv )( pTHX_ SV* var, wxEvtHandler* evth );
+ SV* FUNCPTR( wxPli_non_object_2_sv )( pTHX_ SV* var, const void* data,
+ const char* package );
+@@ -531,6 +535,9 @@ struct wxPliHelpers
+ wxPliSelfRef* ( * m_wxPli_get_selfref )( pTHX_ wxObject*, bool);
+ SV* ( * m_wxPli_object_2_scalarsv )( pTHX_ SV* var, const wxObject* object );
+ SV* ( * m_wxPli_namedobject_2_sv )( pTHX_ SV* var, const wxObject* object, const char* package );
++ SV* (* m_wxPli_sharedclientdatacontainer_2_sv )( pTHX_ SV* var,
++ wxSharedClientDataContainer* scdc,
++ const char* klass );
+ };
+
+ #if wxPERL_USE_THREADS
+@@ -576,7 +583,8 @@ wxPliHelpers name = { &wxPli_sv_2_object
+ &wxPli_objlist_push, &wxPliOutputStream_ctor, &wxPli_stringarray_push, \
+ &wxPli_overload_error, &wxPli_sv_2_wxvariant, \
+ &wxPli_create_virtual_evthandler, &wxPli_get_selfref, &wxPli_object_2_scalarsv, \
+- &wxPli_namedobject_2_sv \
++ &wxPli_namedobject_2_sv, \
++ &wxPli_sharedclientdatacontainer_2_sv \
+ }
+
+ #if NEEDS_PLI_HELPERS_STRUCT()
+@@ -627,6 +635,7 @@ wxPliHelpers name = { &wxPli_sv_2_object
+ wxPli_get_selfref = name->m_wxPli_get_selfref; \
+ wxPli_object_2_scalarsv = name->m_wxPli_object_2_scalarsv; \
+ wxPli_namedobject_2_sv = name->m_wxPli_namedobject_2_sv; \
++ wxPli_sharedclientdatacontainer_2_sv = name->m_wxPli_sharedclientdatacontainer_2_sv; \
+ WXPLI_INIT_CLASSINFO();
+
+ #else
+--- a/ext/grid/typemap
++++ b/ext/grid/typemap
+@@ -26,7 +26,7 @@ wxGridCellCoords * O_NON_WXOBJECT_T
+ wxGridCellAttr * O_NON_WXOBJECT_THR_SV
+ wxGridCellAttr::wxAttrKind T_ENUM
+
+-wxGridCellRenderer * O_WXCLIENTDATACONTAINER_THR_SV
++wxGridCellRenderer * O_WXSHAREDCLIENTDATACONTAINER_THR_SV
+ wxGridCellStringRenderer * O_NON_WXOBJECT_THR_SV
+ wxGridCellNumberRenderer * O_NON_WXOBJECT_THR_SV
+ wxGridCellFloatRenderer * O_NON_WXOBJECT_THR_SV
+@@ -34,9 +34,9 @@ wxGridCellBoolRenderer * O_NON_WX
+ wxGridCellAutoWrapStringRenderer * O_NON_WXOBJECT_THR_SV
+ wxGridCellEnumRenderer * O_NON_WXOBJECT_THR_SV
+ wxGridCellDateTimeRenderer * O_NON_WXOBJECT_THR_SV
+-wxPlGridCellRenderer * O_WXCLIENTDATACONTAINER_THR_SV
++wxPlGridCellRenderer * O_WXSHAREDCLIENTDATACONTAINER_THR_SV
+
+-wxGridCellEditor * O_WXCLIENTDATACONTAINER_THR_SV
++wxGridCellEditor * O_WXSHAREDCLIENTDATACONTAINER_THR_SV
+ wxGridCellTextEditor * O_NON_WXOBJECT_THR_SV
+ wxGridCellNumberEditor * O_NON_WXOBJECT_THR_SV
+ wxGridCellFloatEditor * O_NON_WXOBJECT_THR_SV
+@@ -44,7 +44,7 @@ wxGridCellBoolEditor * O_NON_WX
+ wxGridCellChoiceEditor * O_NON_WXOBJECT_THR_SV
+ wxGridCellAutoWrapStringEditor * O_NON_WXOBJECT_THR_SV
+ wxGridCellEnumEditor * O_NON_WXOBJECT_THR_SV
+-wxPlGridCellEditor * O_WXCLIENTDATACONTAINER_THR_SV
++wxPlGridCellEditor * O_WXSHAREDCLIENTDATACONTAINER_THR_SV
+
+ wxPlGridTable* O_WXOBJECT
+ wxGridTableBase* O_WXOBJECT
+--- a/typemap
++++ b/typemap
+@@ -123,6 +123,7 @@ wxObject * O_WXOBJECT
+ wxApp * O_WXOBJECT
+ wxStandardPaths * O_NON_WXOBJECT
+ wxWindow * O_WXOBJECT
++const wxWindow * O_WXOBJECT
+ wxPlWindow * O_WXOBJECT
+ wxPlControl * O_WXOBJECT
+ wxFrame * O_WXOBJECT
+@@ -377,6 +378,7 @@ wxIcon * O_WXOBJECT_THR
+ wxIconBundle * O_NON_WXOBJECT
+ wxIconLocation * O_NON_WXOBJECT
+ wxBitmap * O_WXOBJECT_THR
++wxBitmapBundle * O_NON_WXOBJECT_THR
+ wxCursor * O_WXOBJECT_THR
+ const wxCursor * O_WXOBJECT_THR
+ wxToolTip * O_WXOBJECT
+@@ -533,6 +535,13 @@ O_WXCLIENTDATACONTAINER_THR_SV
+ wxPli_clientdatacontainer_2_sv( aTHX_ $arg, $var, ${(my $ntt=$ntype)=~s/^(?:const\s+)?(?:Wx_|wx)(.*?)(?:Ptr)?$/$1/g;$ntt=qq{\"Wx::$ntt\"};\$ntt} );
+ wxPli_thread_sv_register( aTHX_ ${(my $ntt=$ntype)=~s/^(?:const\s+)?(?:Wx_|wx)(.*?)(?:Ptr)?$/$1/g;$ntt=qq{\"Wx::$ntt\"};\$ntt}, SvRV( $arg ), $arg );
+
++O_WXSHAREDCLIENTDATACONTAINER
++ wxPli_sharedclientdatacontainer_2_sv( aTHX_ $arg, $var, ${(my $ntt=$ntype)=~s/^(?:const\s+)?(?:Wx_|wx)(.*?)(?:Ptr)?$/$1/g;$ntt=qq{\"Wx::$ntt\"};\$ntt} );
++
++O_WXSHAREDCLIENTDATACONTAINER_THR_SV
++ wxPli_sharedclientdatacontainer_2_sv( aTHX_ $arg, $var, ${(my $ntt=$ntype)=~s/^(?:const\s+)?(?:Wx_|wx)(.*?)(?:Ptr)?$/$1/g;$ntt=qq{\"Wx::$ntt\"};\$ntt} );
++ wxPli_thread_sv_register( aTHX_ ${(my $ntt=$ntype)=~s/^(?:const\s+)?(?:Wx_|wx)(.*?)(?:Ptr)?$/$1/g;$ntt=qq{\"Wx::$ntt\"};\$ntt}, SvRV( $arg ), $arg );
++
+ O_NON_WXOBJECT
+ wxPli_non_object_2_sv( aTHX_ $arg, $var, ${(my $ntt=$ntype)=~s/^(?:const\s+)?(?:Wx_|wx)(.*?)(?:Ptr)?$/$1/g;$ntt=qq{\"Wx::$ntt\"};\$ntt} );
+
+@@ -587,6 +596,12 @@ O_WXCLIENTDATACONTAINER
+ O_WXCLIENTDATACONTAINER_THR_SV
+ $var = (${(my $t=$type)=~s/^Wx_/wx/;\$t}) wxPli_sv_2_object( aTHX_ $arg, ${(my $ntt=$ntype)=~s/^(?:const\s+)?(?:Wx_|wx)(.*?)(?:Ptr)?$/$1/g;$ntt=qq{\"Wx::$ntt\"};\$ntt} );
+
++O_WXSHAREDCLIENTDATACONTAINER
++ $var = (${(my $t=$type)=~s/^Wx_/wx/;\$t}) wxPli_sv_2_object( aTHX_ $arg, ${(my $ntt=$ntype)=~s/^(?:const\s+)?(?:Wx_|wx)(.*?)(?:Ptr)?$/$1/g;$ntt=qq{\"Wx::$ntt\"};\$ntt} );
++
++O_WXSHAREDCLIENTDATACONTAINER_THR_SV
++ $var = (${(my $t=$type)=~s/^Wx_/wx/;\$t}) wxPli_sv_2_object( aTHX_ $arg, ${(my $ntt=$ntype)=~s/^(?:const\s+)?(?:Wx_|wx)(.*?)(?:Ptr)?$/$1/g;$ntt=qq{\"Wx::$ntt\"};\$ntt} );
++
+ O_NON_WXOBJECT
+ $var = (${(my $t=$type)=~s/^Wx_/wx/;\$t}) wxPli_sv_2_object( aTHX_ $arg, ${(my $ntt=$ntype)=~s/^(?:const\s+)?(?:Wx_|wx)(.*?)(?:Ptr)?$/$1/g;$ntt=qq{\"Wx::$ntt\"};\$ntt} );
+
+--- a/typemap.tmpl
++++ b/typemap.tmpl
+@@ -123,6 +123,7 @@ wxObject * O_WXOBJECT
+ wxApp * O_WXOBJECT
+ wxStandardPaths * O_NON_WXOBJECT
+ wxWindow * O_WXOBJECT
++const wxWindow * O_WXOBJECT
+ wxPlWindow * O_WXOBJECT
+ wxPlControl * O_WXOBJECT
+ wxFrame * O_WXOBJECT
+@@ -377,6 +378,7 @@ wxIcon * O_WXOBJECT_THR
+ wxIconBundle * O_NON_WXOBJECT
+ wxIconLocation * O_NON_WXOBJECT
+ wxBitmap * O_WXOBJECT_THR
++wxBitmapBundle * O_NON_WXOBJECT_THR
+ wxCursor * O_WXOBJECT_THR
+ const wxCursor * O_WXOBJECT_THR
+ wxToolTip * O_WXOBJECT
+@@ -533,6 +535,13 @@ O_WXCLIENTDATACONTAINER_THR_SV
+ wxPli_clientdatacontainer_2_sv( aTHX_ $arg, $var, PERL_CLASS );
+ wxPli_thread_sv_register( aTHX_ PERL_CLASS, SvRV( $arg ), $arg );
+
++O_WXSHAREDCLIENTDATACONTAINER
++ wxPli_sharedclientdatacontainer_2_sv( aTHX_ $arg, $var, PERL_CLASS );
++
++O_WXSHAREDCLIENTDATACONTAINER_THR_SV
++ wxPli_sharedclientdatacontainer_2_sv( aTHX_ $arg, $var, PERL_CLASS );
++ wxPli_thread_sv_register( aTHX_ PERL_CLASS, SvRV( $arg ), $arg );
++
+ O_NON_WXOBJECT
+ wxPli_non_object_2_sv( aTHX_ $arg, $var, PERL_CLASS );
+
+@@ -587,6 +596,12 @@ O_WXCLIENTDATACONTAINER
+ O_WXCLIENTDATACONTAINER_THR_SV
+ $var = (CPP_CLASS) wxPli_sv_2_object( aTHX_ $arg, PERL_CLASS );
+
++O_WXSHAREDCLIENTDATACONTAINER
++ $var = (CPP_CLASS) wxPli_sv_2_object( aTHX_ $arg, PERL_CLASS );
++
++O_WXSHAREDCLIENTDATACONTAINER_THR_SV
++ $var = (CPP_CLASS) wxPli_sv_2_object( aTHX_ $arg, PERL_CLASS );
++
+ O_NON_WXOBJECT
+ $var = (CPP_CLASS) wxPli_sv_2_object( aTHX_ $arg, PERL_CLASS );
+
+--- /dev/null
++++ b/XS/TextEntry.xsp
+@@ -0,0 +1,89 @@
++#############################################################################
++## Name: viface/TextEntry.xsp
++## Purpose: XS++ for wxTextEntry
++## Author: Scott Talbert
++## Modified by:
++## Created: 09/11/2022
++## RCS-ID: $Id:$
++## Copyright: (c) 2022 Scott Talbert
++## Licence: This program is free software; you can redistribute it and/or
++## modify it under the same terms as Perl itself
++#############################################################################
++
++%file{xspp/TextEntry.h};
++
++%module{Wx};
++
++#if WXPERL_W_VERSION_GE( 2, 9, 0 )
++
++%typemap{wxTextPos}{parsed}{
++ %cpp_type{%wxTextPos%};
++};
++%typemap{wxTextEntry*}{simple};
++
++%name{Wx::TextEntry} class wxTextEntry
++{
++ virtual void AppendText(const wxString& text);
++ bool AutoComplete(const wxArrayString& choices);
++## bool AutoComplete(wxTextCompleter *completer);
++ bool AutoCompleteFileNames();
++ bool AutoCompleteDirectories();
++ virtual bool CanCopy() const;
++ virtual bool CanCut() const;
++ virtual bool CanPaste() const;
++ virtual bool CanRedo() const;
++ virtual bool CanUndo() const;
++ virtual void ChangeValue(const wxString& value);
++ virtual void Clear();
++ virtual void Copy();
++ virtual void Cut();
++ void ForceUpper();
++ virtual long GetInsertionPoint() const;
++ virtual wxTextPos GetLastPosition() const;
++ virtual wxString GetRange(long from, long to) const;
++ ##virtual void GetSelection(long* from, long* to) const;
++ virtual wxString GetStringSelection() const;
++ virtual wxString GetValue() const;
++ virtual bool IsEditable() const;
++ virtual bool IsEmpty() const;
++ virtual void Paste();
++ virtual void Redo();
++ virtual void Remove(long from, long to);
++ virtual void Replace(long from, long to, const wxString& value);
++ virtual void SetEditable(bool editable);
++ virtual void SetInsertionPoint(long pos);
++ virtual void SetInsertionPointEnd();
++ virtual void SetMaxLength(unsigned long len);
++ virtual void SetSelection(long from, long to);
++ virtual void SelectAll();
++ virtual void SelectNone();
++ virtual bool SetHint(const wxString& hint);
++ virtual wxString GetHint() const;
++ bool SetMargins(const wxPoint& pt);
++## bool SetMargins(wxCoord left, wxCoord top = -1);
++ wxPoint GetMargins() const;
++ virtual void SetValue(const wxString& value);
++ virtual void Undo();
++ virtual void WriteText(const wxString& text);
++};
++
++%{
++
++void
++wxTextEntry::GetSelection()
++ PREINIT:
++ long from;
++ long to;
++ PPCODE:
++ THIS->GetSelection( &from, &to );
++ EXTEND( SP, 2 );
++ PUSHs( sv_2mortal( newSViv( from ) ) );
++ PUSHs( sv_2mortal( newSViv( to ) ) );
++
++%}
++
++#endif
++
++%file{-};
++
++
+--- a/MANIFEST
++++ b/MANIFEST
+@@ -479,6 +479,7 @@ XS/AnimationCtrl.xsp
+ XS/App.xs
+ XS/ArtProvider.xsp
+ XS/Bitmap.xs
++XS/BitmapBundle.xsp
+ XS/BitmapComboBox.xsp
+ XS/BookCtrl.xsp
+ XS/Brush.xsp
+@@ -581,6 +582,7 @@ XS/TaskBarIcon.xs
+ XS/TextAttr.xsp
+ XS/TextCtrl.xsp
+ XS/TextCtrlIface.xsp
++XS/TextEntry.xsp
+ XS/TextEntryDialog.xs
+ XS/Timer.xs
+ XS/ToggleButton.xs
+--- a/XS/SearchCtrl.xsp
++++ b/XS/SearchCtrl.xsp
+@@ -74,8 +74,8 @@ new( ... )
+
+ #define WXPERL_IN_SEARCHCTRL
+
+-INCLUDE_COMMAND: $^X -MExtUtils::XSpp::Cmd -e xspp -- -t typemap.xsp XS/TextCtrlIface.xsp
+-INCLUDE_COMMAND: $^X -pe "s/TextCtrlIface/SearchCtrl/g" xspp/TextCtrlIface.h
++INCLUDE_COMMAND: $^X -MExtUtils::XSpp::Cmd -e xspp -- -t typemap.xsp XS/TextEntry.xsp
++INCLUDE_COMMAND: $^X -pe "s/TextEntry/SearchCtrl/g" xspp/TextEntry.h
+
+ #undef WXPERL_IN_SEARCHCTRL
+
+--- a/Wx.xs
++++ b/Wx.xs
+@@ -623,6 +623,7 @@ MODULE=Wx PACKAGE=Wx
+ #!irrelevant class wxScopedPtr
+ #!irrelevant class wxScopedTiedPtr
+ #!irrelevant class wxSemaphore
++#!irrelevant class wxSharedDataContainer
+ #!irrelevant class wxString
+ #!irrelevant class wxStringBuffer
+ #!irrelevant class wxStringBufferLength
+--- a/interface/wx/headercol.h
++++ b/interface/wx/headercol.h
+@@ -218,7 +218,7 @@ public:
+ Notice that the bitmaps displayed in different columns of the same
+ control must all be of the same size.
+ */
+- virtual void SetBitmap(const wxBitmap& bitmap) = 0 %Virtual{pure};
++ virtual void SetBitmap(const wxBitmapBundle& bitmap) = 0 %Virtual{pure};
+
+ /**
+ Set the column width.
+--- a/GDI.xs
++++ b/GDI.xs
+@@ -42,6 +42,7 @@ INCLUDE: XS/ColourDatabase.xs
+ INCLUDE: XS/Font.xs
+ INCLUDE_COMMAND: $^X -I./ -MExtUtils::XSpp::Cmd -e xspp -- -t typemap.xsp XS/ImageList.xsp
+ INCLUDE: XS/Bitmap.xs
++INCLUDE_COMMAND: $^X -I./ -MExtUtils::XSpp::Cmd -e xspp -- -t typemap.xsp XS/BitmapBundle.xsp
+ INCLUDE: XS/Icon.xs
+ INCLUDE: XS/Cursor.xs
+ INCLUDE_COMMAND: $^X -I./ -MExtUtils::XSpp::Cmd -e xspp -- -t typemap.xsp XS/DC.xsp
+--- a/typemap.xsp
++++ b/typemap.xsp
+@@ -127,6 +127,8 @@
+ %typemap{wxArtProvider&}{reference};
+ %typemap{wxBitmap}{reference};
+ %typemap{const wxBitmap&}{reference};
++%typemap{wxBitmapBundle}{reference};
++%typemap{const wxBitmapBundle&}{reference};
+ %typemap{wxCursor}{reference};
+ %typemap{const wxCursor&}{reference};
+ %typemap{wxIcon}{reference};
+@@ -170,6 +172,7 @@
+ %typemap{wxSplitterWindow*}{simple};
+ %typemap{wxSplitterEvent*}{simple};
+ %typemap{wxWindow*}{simple};
++%typemap{const wxWindow*}{simple};
+ %typemap{wxListView*}{simple};
+ %typemap{wxSizer*}{simple};
+ %typemap{wxIconBundle*}{simple};
+@@ -195,6 +198,7 @@
+ %typemap{wxImageList*}{simple};
+ %typemap{wxImage*}{simple};
+ %typemap{wxImage&}{reference};
++%typemap{const wxImage&}{reference};
+
+ %typemap{wxPliInputStream}{simple};
+ %typemap{wxPliOutputStream}{simple};
+--- a/build/Wx/XSP/Virtual.pm
++++ b/build/Wx/XSP/Virtual.pm
+@@ -180,6 +180,14 @@ sub handle_method_tag {
+ { name => 'wxBitmap&', merge => 'wxBitmap',},
+ { name => 'const wxBitmap&', merge => 'wxBitmap',},
+
++ { name => 'wxBitmapBundle', convert_return => '*(wxBitmapBundle*)wxPli_sv_2_object( aTHX_ ret, "Wx::BitmapBundle" )',
++ default_value => 'wxBitmapBundle()',
++ type_char => 'O',
++ arguments => '&%s',
++ },
++ { name => 'wxBitmapBundle&', merge => 'wxBitmapBundle',},
++ { name => 'const wxBitmapBundle&', merge => 'wxBitmapBundle',},
++
+ { name => 'wxPoint', convert_return => 'wxPli_sv_2_wxpoint( aTHX_ ret )',
+ default_value => 'wxPoint()',
+ type_char => 'o',
+--- /dev/null
++++ b/XS/BitmapBundle.xsp
+@@ -0,0 +1,76 @@
++#############################################################################
++## Name: XS/BitmapBundle.xsp
++## Purpose: XS for Wx::BitmapBundle
++## Author: Scott Talbert
++## Modified by:
++## Created: 12/12/2022
++## Copyright: (c) 2022 Scott Talbert
++## Licence: This program is free software; you can redistribute it and/or
++## modify it under the same terms as Perl itself
++#############################################################################
++
++%{
++#include <wx/bmpbndl.h>
++%}
++
++%module{Wx};
++
++%name{Wx::BitmapBundle} class wxBitmapBundle
++{
++ %name{newNull} wxBitmapBundle();
++ %name{newBitmap} wxBitmapBundle(const wxBitmap& bitmap);
++ %name{newIcon} wxBitmapBundle(const wxIcon& icon);
++ %name{newImage} wxBitmapBundle(const wxImage& image);
++## wxBitmapBundle(const char* const* xpm);
++## wxBitmapBundle(const wxBitmapBundle& other);
++## wxBitmapBundle& operator=(const wxBitmapBundle& other);
++## static wxBitmapBundle FromBitmaps(const wxVector<wxBitmap>& bitmaps);
++ static wxBitmapBundle FromBitmaps(const wxBitmap& bitmap1,
++ const wxBitmap& bitmap2);
++ static wxBitmapBundle FromBitmap(const wxBitmap& bitmap);
++ static wxBitmapBundle FromIconBundle(const wxIconBundle& iconBundle);
++ static wxBitmapBundle FromImage(const wxImage& image);
++## static wxBitmapBundle FromImpl(wxBitmapBundleImpl* impl);
++ static wxBitmapBundle FromResources(const wxString& name);
++ %name{FromFiles3} wxBitmapBundle FromFiles(const wxString& path, const wxString& filename, const wxString& extension = "png");
++ %name{FromFiles1} wxBitmapBundle FromFiles(const wxString& fullpathname);
++## static wxBitmapBundle FromSVG(char* data, const wxSize& sizeDef);
++ static wxBitmapBundle FromSVG(const char* data, const wxSize& sizeDef);
++ static wxBitmapBundle FromSVGFile(const wxString& path, const wxSize& sizeDef);
++ static wxBitmapBundle FromSVGResource(const wxString& name, const wxSize& sizeDef);
++ void Clear();
++ bool IsOk() const;
++ wxSize GetDefaultSize() const;
++ wxSize GetPreferredBitmapSizeAtScale(double scale) const;
++ wxSize GetPreferredBitmapSizeFor(const wxWindow* window) const;
++ wxSize GetPreferredLogicalSizeFor(const wxWindow* window) const;
++ wxBitmap GetBitmap(const wxSize& size) const;
++ wxBitmap GetBitmapFor(const wxWindow* window) const;
++ wxIcon GetIcon(const wxSize& size) const;
++ wxIcon GetIconFor(const wxWindow* window) const;
++ bool IsSameAs(const wxBitmapBundle& other) const;
++};
++
++%{
++
++MODULE=Wx PACKAGE=Wx::BitmapBundle
++
++void
++new( ... )
++ PPCODE:
++ BEGIN_OVERLOAD()
++ MATCH_VOIDM_REDISP( newNull )
++ MATCH_REDISP( wxPliOvl_wbmp, newBitmap )
++ MATCH_REDISP( wxPliOvl_wico, newIcon )
++ MATCH_REDISP( wxPliOvl_wimg, newImage )
++ END_OVERLOAD( "Wx::BitmapBundle::new" )
++
++void
++wxBitmapBundle::FromFiles( ... )
++ PPCODE:
++ BEGIN_OVERLOAD()
++ MATCH_REDISP( wxPliOvl_s_s_s, FromFiles3 )
++ MATCH_REDISP( wxPliOvl_s, FromFiles1 )
++ END_OVERLOAD( Wx::BitmapBundle::FromFiles )
++
++%}
+\ No newline at end of file
+--- a/Window.xs
++++ b/Window.xs
+@@ -736,10 +736,6 @@ void
+ wxWindow::Lower()
+
+ void
+-wxWindow::MakeModal( flag )
+- bool flag
+-
+-void
+ wxWindow::Move( ... )
+ PPCODE:
+ BEGIN_OVERLOAD()
+--- a/XS/Validators.xs
++++ b/XS/Validators.xs
+@@ -19,10 +19,6 @@ wxWindow*
+ wxValidator::GetWindow()
+
+ void
+-wxValidator::SetBellOnError( doit = true )
+- bool doit
+-
+-void
+ wxValidator::SetWindow( window )
+ wxWindow* window
+
+--- a/ext/propgrid/lib/Wx/PropertyGrid.pm
++++ b/ext/propgrid/lib/Wx/PropertyGrid.pm
+@@ -111,19 +111,19 @@ package Wx::PGSpinCtrlEditor;
+ package Wx::PGInDialogValidator;
+
+ package Wx::StringProperty; @ISA = qw( Wx::PGProperty );
+-package Wx::IntProperty; @ISA = qw( Wx::PGProperty );
+-package Wx::UIntProperty; @ISA = qw( Wx::PGProperty );
+-package Wx::FloatProperty; @ISA = qw( Wx::PGProperty );
++package Wx::IntProperty; @ISA = qw( Wx::NumericProperty );
++package Wx::UIntProperty; @ISA = qw( Wx::NumericProperty );
++package Wx::FloatProperty; @ISA = qw( Wx::NumericProperty );
+ package Wx::BoolProperty; @ISA = qw( Wx::PGProperty );
+ package Wx::EnumProperty; @ISA = qw( Wx::PGProperty );
+ package Wx::EditEnumProperty; @ISA = qw( Wx::EnumProperty );
+ package Wx::FlagsProperty; @ISA = qw( Wx::PGProperty );
+-package Wx::FileProperty; @ISA = qw( Wx::PGProperty );
+-package Wx::LongStringProperty; @ISA = qw( Wx::PGProperty );
+-package Wx::DirProperty ; @ISA = qw( Wx::LongStringProperty );
+-package Wx::ArrayStringProperty; @ISA = qw( Wx::PGProperty );
+-package Wx::MultiChoiceProperty; @ISA = qw( Wx::PGProperty );
+-package Wx::FontProperty; @ISA = qw( Wx::PGProperty );
++package Wx::FileProperty; @ISA = qw( Wx::EditorDialogProperty );
++package Wx::LongStringProperty; @ISA = qw( Wx::EditorDialogProperty );
++package Wx::DirProperty ; @ISA = qw( Wx::EditorDialogProperty );
++package Wx::ArrayStringProperty; @ISA = qw( Wx::EditorDialogProperty );
++package Wx::MultiChoiceProperty; @ISA = qw( Wx::EditorDialogProperty );
++package Wx::FontProperty; @ISA = qw( Wx::EditorDialogProperty );
+ package Wx::SystemColourProperty; @ISA = qw( Wx::EnumProperty );
+ package Wx::ColourProperty; @ISA = qw( Wx::SystemColourProperty );
+ package Wx::CursorProperty; @ISA = qw( Wx::EnumProperty );
+--- a/ext/ribbon/t/03_threads.t
++++ b/ext/ribbon/t/03_threads.t
+@@ -27,9 +27,9 @@ my $app = Wx::App->new( sub { 1 } );
+ my $frame = Wx::Frame->new(undef, -1, 'Test Frame');
+ my $rcontrol = Wx::RibbonControl->new($frame, -1);
+ my $rgallery = Wx::RibbonGallery->new($frame, -1);
+-my $rpanel = Wx::RibbonPanel->new($frame, -1);
+ my $rbar = Wx::RibbonBar->new($frame, -1);
+ my $rpage = Wx::RibbonPage->new($rbar, -1);
++my $rpanel = Wx::RibbonPanel->new($rpage, -1);
+ my $rbbar = Wx::RibbonButtonBar->new($frame, -1);
+ my $rtbar = Wx::RibbonToolBar->new($frame, -1);
+
+--- a/ext/propgrid/t/03_threads.t
++++ b/ext/propgrid/t/03_threads.t
+@@ -184,8 +184,8 @@ my $choiced1 = Wx::PGChoicesData->new;
+ my $choiced2 = Wx::PGChoicesData->new;
+ my $choicee1 = Wx::PGChoiceEntry->new;
+ my $choicee2 = Wx::PGChoiceEntry->new;
+-my $pgwlist1 = Wx::PGWindowList->new;
+-my $pgwlist2 = Wx::PGWindowList->new;
++my $pgwlist1 = Wx::PGWindowList->new( Wx::Window->new( $frame, -1 ) );
++my $pgwlist2 = Wx::PGWindowList->new( Wx::Window->new( $frame, -1 ) );
+ my $pgmbut1 = Wx::PGMultiButton->new( $propgrid, Wx::Size->new(10,10) );
+ my $pgmbut2 = Wx::PGMultiButton->new($propgrid, Wx::Size->new(10,10));
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/perl-Wx.git/commitdiff/d909feeb4c385828023d4a60a3a89fdac405c522
More information about the pld-cvs-commit
mailing list