FIX: [STUDIO-1940] hide edit ctrl on scroll in ObjectList

Change-Id: I9936ecff241d468f14e3dda0c12e4458cad8c237
This commit is contained in:
chunmao.guo 2023-03-08 15:37:46 +08:00 committed by Lane.Wei
parent bd29ac769c
commit db65fd6e83
2 changed files with 27 additions and 2 deletions

View File

@ -265,7 +265,8 @@ ObjectList::ObjectList(wxWindow* parent) :
this->CallAfter([this]() { ensure_current_item_visible(); }); this->CallAfter([this]() { ensure_current_item_visible(); });
#endif #endif
e.Skip(); e.Skip();
})); }));
} }
ObjectList::~ObjectList() ObjectList::~ObjectList()
@ -4925,6 +4926,9 @@ void ObjectList::OnEditingStarted(wxDataViewEvent &event)
if (col == colName) // TODO: for colName editing, disable shortcuts if (col == colName) // TODO: for colName editing, disable shortcuts
SetAcceleratorTable(wxNullAcceleratorTable); SetAcceleratorTable(wxNullAcceleratorTable);
} }
#ifdef __WXOSX__
SetCustomRendererPtr(dynamic_cast<wxDataViewCustomRenderer*>(renderer));
#endif
#endif //__WXMSW__ #endif //__WXMSW__
} }

View File

@ -208,7 +208,7 @@ void openFolderForFile(wxString const & file)
@end @end
/* edit column for wxTableView */ /* edit column for wxCocoaOutlineView */
#include <wx/dataview.h> #include <wx/dataview.h>
#include <wx/osx/cocoa/dataview.h> #include <wx/osx/cocoa/dataview.h>
@ -216,8 +216,20 @@ void openFolderForFile(wxString const & file)
@implementation wxCocoaOutlineView (Edit) @implementation wxCocoaOutlineView (Edit)
bool addObserver = false;
- (BOOL)outlineView: (NSOutlineView*) view shouldEditTableColumn:(nullable NSTableColumn *)tableColumn item:(nonnull id)item - (BOOL)outlineView: (NSOutlineView*) view shouldEditTableColumn:(nullable NSTableColumn *)tableColumn item:(nonnull id)item
{ {
NSClipView * clipView = [[self enclosingScrollView] contentView];
if (!addObserver) {
addObserver = true;
clipView.postsBoundsChangedNotifications = YES;
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(synchronizedViewContentBoundsDidChange:)
name:NSViewBoundsDidChangeNotification
object:clipView];
}
wxDataViewColumn* const col((wxDataViewColumn *)[tableColumn getColumnPointer]); wxDataViewColumn* const col((wxDataViewColumn *)[tableColumn getColumnPointer]);
wxDataViewItem item2([static_cast<wxPointerObject *>(item) pointer]); wxDataViewItem item2([static_cast<wxPointerObject *>(item) pointer]);
@ -227,9 +239,18 @@ void openFolderForFile(wxString const & file)
dvc->GetEventHandler()->ProcessEvent( event ); dvc->GetEventHandler()->ProcessEvent( event );
if( !event.IsAllowed() ) if( !event.IsAllowed() )
return NO; return NO;
return YES; return YES;
} }
- (void)synchronizedViewContentBoundsDidChange:(NSNotification *)notification
{
wxDataViewCtrl* const dvc = implementation->GetDataViewCtrl();
wxDataViewCustomRenderer * r = dvc->GetCustomRendererPtr();
if (r)
r->FinishEditing();
}
@end @end
/* Font for wxTextCtrl */ /* Font for wxTextCtrl */