Hi Andre, I'm slowly getting back on my feet. Thanks for your continued support!
This is a really good catch below and I like your solution to the problem. Please file a bug report with patch. Thanks much in advance! Dave Message: 1 Date: Mon, 12 Feb 2007 11:09:26 +0100 (CET) From: " Andr? Dietisheim " <[EMAIL PROTECTED]> Subject: [nebula-dev] [compositetable] sorting looses row-changes To: <[EMAIL PROTECTED]>, <[email protected]> Message-ID: <[EMAIL PROTECTED]> Content-Type: text/plain; charset=iso-8859-1 Hi Dave I hope that you're back up on your feets! I just found another arrive/depart related bug and I wanted to discuss the solution I suggest: The bug occours when the model gets sorted. I have a snippet (CompositeTableSnippetDebug changed to native headers) and I could post it together with a bugzilla entry. Sorting a model does not trigger an appropriate requestDepartEvent so that changes in a column widget gets written back to the model before sorting it. Your sorting code in Snippet5 has a table.refreshAllRows() after executing Arrays.sort(). I thought firing fireRequestRowChangeEvent() in refreshTable(). But this does not help as this is too late (topRow does not reflect the proper state as the model is already sorted). Changes are written at the wrong model offset. Another issue here is that currentRow (aka the currently selected row in the model) does either match the changed model and should be cleared & set back in user code. I therefore suggest having a clearSelection()-method in compositeTable and InternalCompositeTable a user programmer should call before sorting and setting selection after sorting. My solution looks like that: snippet5: private static class Header extends AbstractNativeHeader { ... protected boolean sortOnColumn(int column, int sortDirection) { table.clearSelection(); ... Arrays.sort(swtCommitters, comparator); table.refreshAllRows(); table.setSelection(); } CompositeTable: public void clearSelection() { if (contentPane == null) { return; } contentPane.clearSelection(); } InternalCompositeTable: public void clearSelection() { Control toFocus = getControl(currentColumn, currentRow); if (fireRequestRowChangeEvent()) { if (toFocus != null) { toFocus.notifyListeners(SWT.FocusOut, new Event()); } } } For proper bug-handling I could post all this to bugzilla together with my patch. I'd love to get your feedback! Regards Andr� > Hi Dave > > Wish you good recovery! Have a good rest (we all stressed IT workers > need it from time to time :-( > > Greetings > Andr� > >> Hi Andre >> >> Thanks for your concern and thanks for the bug report! >> >> Doctor gave antibiotics and said it would be four days before I really >> start feeling better. :-( >> >> >> Dave >> ---------------------------------------------------------------------- >> >> Message: 1 >> Date: Mon, 5 Feb 2007 10:29:15 +0100 (CET) >> From: " Andr? Dietisheim " <[EMAIL PROTECTED]> >> Subject: Re: [nebula-dev] [compositetable] bug: changes in topRow == 0 >> To: <[email protected]> >> Message-ID: >> <[EMAIL PROTECTED]> >> Content-Type: text/plain; charset=iso-8859-1 >> >> Hi Dave! >> >> hope you're back up on feets again! >> You're welcome! :-)) I'd really like to use it in my client (I am >> coding >> sort of highly extended database browser for the swiss railways) to >> replace the current tableViewer so I'll have to code until its bugfree >> and has all features I need. But I admit your table is very >> intersting stuff! >> >> I posted the next bug + patch I found when testing on my gtk-box @ >> home. I hope you don't mind me refactoring a bit, it helped me best >> to understand the code and I think its valuable for anybody trying to >> understand the code. >> >> Greetings >> Andr��� >> >> >> >> >> > > > -- > Andr� Dietisheim > Stv-Bereichsleiter Products > > Puzzle ITC GmbH > Eigerplatz 4 > CH-3007 Bern > Telefon +41 31 370 22 00 > Mobile +41 76 423 03 02 > Fax +41 31 370 22 01 > > Puzzle ist Mitglied der ODF Alliance: > <http://www.puzzle.ch/odfalliance/> > > > _______________________________________________ > nebula-dev mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/nebula-dev > > > !DSPAM:45c8a5f6134643936241041! -- Andr� Dietisheim Stv-Bereichsleiter Products Puzzle ITC GmbH Eigerplatz 4 CH-3007 Bern Telefon +41 31 370 22 00 Mobile +41 76 423 03 02 Fax +41 31 370 22 01 Puzzle ist Mitglied der ODF Alliance: <http://www.puzzle.ch/odfalliance/> ------------------------------ _______________________________________________ nebula-dev mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/nebula-dev End of nebula-dev Digest, Vol 11, Issue 9 *****************************************
_______________________________________________ nebula-dev mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/nebula-dev
