From: Mike S. <Mik...@Do...> - 2007-01-05 18:05:11
|
Something strange going on with wxMac 2.8.0 ListCtrls. I have verified that the listctrl c++ sample app that comes with the wxMac source works correctly, so I am assuming there is something wrong with the wxPerl bindings. In Wx::Demo 0.05, looking at the DemoModules::wxListCtrl example (report style), the sample frame comes up, but the first ListCtrl column is *very* wide -- (ie no other columns are visible). If you try to use the horizontal scroll bar to try and see the other columns, the app crashes with a "Bus Error". The apple crash reporter gives this: Date/Time: 2007-01-05 10:52:39.751 -0700 OS Version: 10.4.8 (Build 8L2127) Report Version: 4 Command: wxPerl Path: /Library/Perl/5.8.6/darwin-thread-multi-2level/auto/Wx/wxPerl.app/Contents/MacOS/wxPerl Parent: bash [1377] Version: ??? (1.0) PID: 3862 Thread: 0 Exception: EXC_BAD_ACCESS (0x0001) Codes: KERN_PROTECTION_FAILURE (0x0002) at 0x00000008 Thread 0 Crashed: 0 libwx_mac_core-2.8.0.dylib 0x01043d3d wxListCtrl::GetColumn(int, wxListItem&) const + 87 1 libwx_mac_core-2.8.0.dylib 0x0104af9c wxMacDataBrowserListCtrlControl::DrawItem(unsigned long, unsigned long, unsigned long, Rect const*, short, unsigned char) + 1802 2 com.apple.HIToolbox 0x92efba3d TBrowser::Draw(unsigned long, unsigned long, unsigned long, Rect const&, short, bool) const + 109 3 com.apple.HIToolbox 0x92edfc24 TTableCell::Draw(unsigned long, TDeviceRenderer::Context const&) const + 1270 4 com.apple.HIToolbox 0x92edf4e5 TListView::DrawCell(TTableCell const&, unsigned long, TDeviceRenderer::Context const&) const + 91 5 com.apple.HIToolbox 0x92edf232 TTableView::DrawCellSelf(Cell32 const&, Rect const&, TDeviceRenderer::Context const&, DBDrawFlags) const + 110 6 com.apple.HIToolbox 0x92ede5d0 TTableLayout::Draw(Rect const&, UPoint32 const&, TDeviceRenderer::Context const&, DBDrawFlags) const + 252 7 com.apple.HIToolbox 0x92ede4b3 TTableView::DrawView(unsigned short, TDeviceRenderer::Context const&) const + 157 8 com.apple.HIToolbox 0x92edc768 TListView::DrawView(unsigned short, TDeviceRenderer::Context const&) const + 158 9 com.apple.HIToolbox 0x92edc330 TBrowserView::Draw(CGContext*, unsigned short, OpaqueRgnHandle*) const + 438 10 com.apple.HIToolbox 0x92edc0f2 TBrowser::Draw(CGContext*, OpaqueRgnHandle*) const + 458 11 com.apple.HIToolbox 0x92ecda58 TBrowser::EventHandlerProc(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 2704 12 com.apple.HIToolbox 0x92dcc7eb DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1093 13 com.apple.HIToolbox 0x92dcbe90 SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 304 14 com.apple.HIToolbox 0x92e0ecdc CallNextEventHandler + 62 15 libwx_mac_core-2.8.0.dylib 0x0107b696 wxWindow::OnPaint(wxPaintEvent&) + 46 16 libwx_base_carbon-2.8.0.dylib 0x014ba902 wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) + 108 17 libwx_base_carbon-2.8.0.dylib 0x014baa99 wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*) + 103 18 libwx_base_carbon-2.8.0.dylib 0x014bac35 wxEvtHandler::ProcessEvent(wxEvent&) + 183 19 libwx_mac_core-2.8.0.dylib 0x01081f6a wxWindow::MacDoRedraw(void*, long) + 1188 20 libwx_mac_core-2.8.0.dylib 0x0108066b wxMacWindowControlEventHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 693 21 libwx_mac_core-2.8.0.dylib 0x01080c79 wxMacWindowEventHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 609 22 com.apple.HIToolbox 0x92dcc7eb DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1093 23 com.apple.HIToolbox 0x92dcbe90 SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 304 24 com.apple.HIToolbox 0x92e0ecdc CallNextEventHandler + 62 25 libwx_mac_core-2.8.0.dylib 0x010451f1 wxMacListCtrlEventHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 257 26 com.apple.HIToolbox 0x92dcc7eb DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1093 27 com.apple.HIToolbox 0x92dcbe90 SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 304 28 com.apple.HIToolbox 0x92dcbd55 SendEventToEventTargetWithOptions + 55 29 com.apple.HIToolbox 0x92df90cc HIView::SendDraw(short, OpaqueGrafPtr*, __HIShape const*, CGContext*) + 466 30 com.apple.HIToolbox 0x92f6dd52 HIView::RecursiveDrawComposited(__HIShape const*, unsigned long, HIView*, CGContext*, unsigned char) + 874 31 com.apple.HIToolbox 0x92f6dee4 HIView::RecursiveDrawComposited(__HIShape const*, unsigned long, HIView*, CGContext*, unsigned char) + 1276 32 com.apple.HIToolbox 0x92f6dee4 HIView::RecursiveDrawComposited(__HIShape const*, unsigned long, HIView*, CGContext*, unsigned char) + 1276 33 com.apple.HIToolbox 0x92f6dee4 HIView::RecursiveDrawComposited(__HIShape const*, unsigned long, HIView*, CGContext*, unsigned char) + 1276 34 com.apple.HIToolbox 0x92f6dee4 HIView::RecursiveDrawComposited(__HIShape const*, unsigned long, HIView*, CGContext*, unsigned char) + 1276 35 com.apple.HIToolbox 0x92f6dee4 HIView::RecursiveDrawComposited(__HIShape const*, unsigned long, HIView*, CGContext*, unsigned char) + 1276 36 com.apple.HIToolbox 0x92f6e6d4 HIView::DrawComposited(short, OpaqueGrafPtr*, __HIShape const*, unsigned long, HIView*, CGContext*) + 600 37 com.apple.HIToolbox 0x92df8b26 HIView::Draw(short, OpaqueGrafPtr*, unsigned long) + 74 38 com.apple.HIToolbox 0x92df8a63 HIView::Render(unsigned long, CGContext*) + 45 39 com.apple.HIToolbox 0x9307e3ed FlushWindowObject(WindowData*, void**, unsigned char) + 581 40 com.apple.HIToolbox 0x92dea71f FlushAllBuffers(__CFRunLoopObserver*, CFRunLoopActivity, void*) + 167 41 com.apple.CoreFoundation 0x9082a155 __CFRunLoopDoObservers + 342 42 com.apple.CoreFoundation 0x90828fdd CFRunLoopRunSpecific + 289 43 com.apple.CoreFoundation 0x90828eb5 CFRunLoopRunInMode + 61 44 com.apple.HIToolbox 0x92dcdb90 RunCurrentEventLoopInMode + 285 45 com.apple.HIToolbox 0x92dcd1ce ReceiveNextEventCommon + 184 46 com.apple.HIToolbox 0x92e15929 _AcquireNextEvent + 58 47 com.apple.HIToolbox 0x92e905a4 _TrackMouseLocationReturningEvent + 245 48 com.apple.HIToolbox 0x92e904a7 TrackMouseLocationWithOptions + 87 49 com.apple.HIToolbox 0x92e96e33 HIView::TrackMouseLocation(double, Point, Point&, unsigned long*, unsigned char&, void*&) + 129 50 com.apple.HIToolbox 0x92e961b1 HIView::DragLiveIndicator(CGPoint const&, unsigned long*, void (*)(OpaqueControlRef*, short), GlyphState const*, unsigned char, unsigned char) + 481 51 com.apple.HIToolbox 0x92e95e21 HIView::DragIndicator(CGPoint const&, unsigned long*, void (*)(OpaqueControlRef*, short), GlyphState const*, unsigned char, unsigned char) + 213 52 com.apple.HIToolbox 0x92e8fbd0 HIView::TrackSelf(OpaqueEventRef*, short*) + 468 53 com.apple.HIToolbox 0x92e95ab1 HIScrollBar::TrackSelf(OpaqueEventRef*, short*) + 33 54 com.apple.HIToolbox 0x92df078d HIView::EventHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 2531 55 com.apple.HIToolbox 0x92dcc7eb DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1093 56 com.apple.HIToolbox 0x92dcbe90 SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 304 57 com.apple.HIToolbox 0x92e0ecdc CallNextEventHandler + 62 58 com.apple.HIToolbox 0x92f2e69c TBrowserView::ScrollBarEventHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 50 59 com.apple.HIToolbox 0x92dcc7eb DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1093 60 com.apple.HIToolbox 0x92dcbe90 SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 304 61 com.apple.HIToolbox 0x92dcbd55 SendEventToEventTargetWithOptions + 55 62 com.apple.HIToolbox 0x92e8f886 SendControlDefTrack(HIView*, CGPoint const&, unsigned long*, void (*)(OpaqueControlRef*, short), OpaqueEventRef*, short*) + 312 63 com.apple.HIToolbox 0x92e8f69a HIView::ClickInternal(CGPoint const&, unsigned long, void (*)(OpaqueControlRef*, short), OpaqueEventRef*, bool) + 160 64 com.apple.HIToolbox 0x92ebf742 HandleControlClick + 98 65 libwx_mac_core-2.8.0.dylib 0x010785f6 wxMacTopLevelMouseEventHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 1884 66 libwx_mac_core-2.8.0.dylib 0x01078aa8 wxMacTopLevelEventHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 998 67 com.apple.HIToolbox 0x92dcc7eb DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1093 68 com.apple.HIToolbox 0x92dcbe90 SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 304 69 com.apple.HIToolbox 0x92dd30f0 SendEventToEventTarget + 56 70 com.apple.HIToolbox 0x92dd3589 ToolboxEventDispatcherHandler(OpaqueEventHandlerCallRef*, OpaqueEventRef*, void*) + 1169 71 com.apple.HIToolbox 0x92dccba2 DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 2044 72 com.apple.HIToolbox 0x92dcbe90 SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 304 73 com.apple.HIToolbox 0x92dd30f0 SendEventToEventTarget + 56 74 libwx_mac_core-2.8.0.dylib 0x01017e04 wxApp::MacHandleOneEvent(void*) + 34 75 libwx_mac_core-2.8.0.dylib 0x01017ec0 wxApp::MacDoOneEvent() + 108 76 libwx_mac_core-2.8.0.dylib 0x01030df4 wxEventLoop::Dispatch() + 32 77 libwx_mac_core-2.8.0.dylib 0x010de395 wxEventLoopManual::Run() + 97 78 libwx_mac_core-2.8.0.dylib 0x010b5514 wxAppBase::MainLoop() + 76 79 Wx.bundle 0x005d7a6a wxPliApp::MainLoop() + 40 80 Wx.bundle 0x00416218 XS_Wx__App_MainLoop(interpreter*, cv*) + 234 81 libperl.dylib 0x967a41ad Perl_pp_entersub + 897 82 libperl.dylib 0x9679b277 Perl_runops_standard + 19 83 libperl.dylib 0x9672e430 perl_run + 300 84 net.sourceforge.wxperl 0x000020d2 0x1000 + 4306 85 net.sourceforge.wxperl 0x00001f56 0x1000 + 3926 86 net.sourceforge.wxperl 0x00001e71 0x1000 + 3697 |
From: Edward H. <ed...@do...> - 2007-01-06 23:02:07
|
I've been looking at this further and wondering if the problem arises somehow from this: http://www.wxwidgets.org/manuals/2.8.0/wx_wxlistctrl.html *Mac Note:* Starting with 2.8, wxListCtrl uses a native implementation for report mode, and uses a generic implementation for other modes. You can use the generic implementation for report mode as well by setting the mac.listctrl.always_use_generic wxSystemOption <http://www.wxwidgets.org/manuals/2.8.0/wx_wxsystemoptions.html#wxsystemoptions> to 1. Sounds likely since this weirdness is seen only in report mode, only on the mac. Also sounds likely that we'll want to set that option in any case because we want consistent behavior across platforms as much as possible. If wxSystemOptions are available in wxPerl, though, it's not clear to me how to get or set them. Can you get or set wxSystemOptions in wxPerl? Mike Schroeder wrote: > Something strange going on with wxMac 2.8.0 ListCtrls. I have verified > that the listctrl c++ sample app that comes with the wxMac source works > correctly, so I am assuming there is something wrong with the wxPerl > bindings. > > In Wx::Demo 0.05, looking at the DemoModules::wxListCtrl example > (report style), the sample frame comes up, but the first ListCtrl column > is *very* wide -- (ie no other columns are visible). If you try to use > the horizontal scroll bar to try and see the other columns, the app > crashes with a "Bus Error". The apple crash reporter gives this: > |
From: Mark D. <mar...@zn...> - 2007-01-07 01:32:58
Attachments:
utils.diff
|
Hi, SystemOptions isn't currently wrapped (probably because it hasn't been particularly useful until now) The attached diff wraps Wx::SystemOptions. On Win32 the methods 'work' in that I can set an option then retrieve it's value / check if it exists etc. On Win32 though, there's nothing obvious to test to see if settings are having any effect. Would you like to test it on the Mac ? Wx::SystemOptions::SetOptionInt('mac.listctrl.always_use_generic',1); would seem to be the required call once the functions are available. Regards Mark Edward Heil wrote: > I've been looking at this further and wondering if the problem arises > somehow from this: > > http://www.wxwidgets.org/manuals/2.8.0/wx_wxlistctrl.html > *Mac Note:* Starting with 2.8, wxListCtrl uses a native implementation > for report mode, and uses a generic implementation for other modes. You > can use the generic implementation for report mode as well by setting > the mac.listctrl.always_use_generic wxSystemOption > <http://www.wxwidgets.org/manuals/2.8.0/wx_wxsystemoptions.html#wxsystemoptions> > to 1. > > Sounds likely since this weirdness is seen only in report mode, only on > the mac. Also sounds likely that we'll want to set that option in any > case because we want consistent behavior across platforms as much as > possible. > > If wxSystemOptions are available in wxPerl, though, it's not clear to me > how to get or set them. Can you get or set wxSystemOptions in wxPerl? > > > > Mike Schroeder wrote: >> Something strange going on with wxMac 2.8.0 ListCtrls. I have verified >> that the listctrl c++ sample app that comes with the wxMac source works >> correctly, so I am assuming there is something wrong with the wxPerl >> bindings. >> >> In Wx::Demo 0.05, looking at the DemoModules::wxListCtrl example >> (report style), the sample frame comes up, but the first ListCtrl column >> is *very* wide -- (ie no other columns are visible). If you try to use >> the horizontal scroll bar to try and see the other columns, the app >> crashes with a "Bus Error". The apple crash reporter gives this: >> > > > ------------------------------------------------------------------------- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to share your > opinions on IT & business topics through brief surveys - and earn cash > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > wxperl-users mailing list > wxp...@li... > https://lists.sourceforge.net/lists/listinfo/wxperl-users |
From: Edward H. <ed...@do...> - 2007-01-07 05:50:39
|
Mark Dootson wrote: > Hi, > > SystemOptions isn't currently wrapped (probably because it hasn't been > particularly useful until now) > > The attached diff wraps Wx::SystemOptions. On Win32 the methods 'work' > in that I can set an option then retrieve it's value / check if it > exists etc. On Win32 though, there's nothing obvious to test to see if > settings are having any effect. > > Would you like to test it on the Mac ? > > Wx::SystemOptions::SetOptionInt('mac.listctrl.always_use_generic',1); > > would seem to be the required call once the functions are available. > And believe it or not, that does the magic! I added: Wx::SystemOptions::SetOption("mac.listctrl.always_use_generic",1); to the demo application, and it works now! It would still be nice not to have to do this -- but I'm thrilled to have this option. Thank you very much! |