diff --git a/src/zmapWindow/zmapWindowDrawFeatures.c b/src/zmapWindow/zmapWindowDrawFeatures.c index f5751fef76312a90a5ca181b217ef67a8185739a..2b3bb2f340750fa329be240ef7e6a018f9f62bf2 100755 --- a/src/zmapWindow/zmapWindowDrawFeatures.c +++ b/src/zmapWindow/zmapWindowDrawFeatures.c @@ -26,9 +26,9 @@ * * Exported functions: * HISTORY: - * Last edited: Jul 14 09:09 2008 (edgrif) + * Last edited: Sep 3 11:02 2008 (rds) * Created: Thu Jul 29 10:45:00 2004 (rnc) - * CVS info: $Id: zmapWindowDrawFeatures.c,v 1.207 2008-07-18 07:53:40 edgrif Exp $ + * CVS info: $Id: zmapWindowDrawFeatures.c,v 1.208 2008-09-03 10:05:49 rds Exp $ *------------------------------------------------------------------- */ @@ -588,11 +588,20 @@ void zmapWindowDrawFeatureSet(ZMapWindow window, * context... */ if ((overlap_mode = zMapStyleGetOverlapMode(view_feature_set->style)) != ZMAPOVERLAP_COMPLETE) { + /* Changed zmapWindowColumnBump to zmapWindowColumnBumpRange to fix RT#66832 */ + /* The problem was objects outside of the mark were being hidden as ColumnBump + * respects the mark if there is one. This is probably _not_ the right thing + * to do here. However, this might need some re-evaluation... */ + /* The main reason I think we will fall down here is when we have deferred + * loading. If we are loading a set of alignments within the marked area, + * then if the default display is to bump these and there are other aligns + * already loaded in this column a COMPRESS_ALL will bump the whole column + * _not_ just the newly loaded ones... */ if (forward_col_wcp) - zmapWindowColumnBump(FOO_CANVAS_ITEM(forward_col_wcp), overlap_mode) ; + zmapWindowColumnBumpRange(FOO_CANVAS_ITEM(forward_col_wcp), overlap_mode, ZMAPWWINDOW_COMPRESS_ALL) ; if (reverse_col_wcp) - zmapWindowColumnBump(FOO_CANVAS_ITEM(reverse_col_wcp), overlap_mode) ; + zmapWindowColumnBumpRange(FOO_CANVAS_ITEM(reverse_col_wcp), overlap_mode, ZMAPWWINDOW_COMPRESS_ALL) ; } } @@ -628,8 +637,12 @@ void zmapWindowRemoveEmptyColumns(ZMapWindow window, gboolean zmapWindowRemoveIfEmptyCol(FooCanvasGroup **col_group) { gboolean removed = FALSE ; + ZMapWindowItemFeatureSetData set_data; - if (!zmapWindowContainerHasFeatures(*col_group)) + set_data = zmapWindowContainerGetData(*col_group, ITEM_FEATURE_SET_DATA); + + if ((!zmapWindowContainerHasFeatures(*col_group)) && + ((!set_data) || (set_data && !zMapStyleGetShowWhenEmpty(set_data->style)))) { zmapWindowContainerDestroy(*col_group) ; *col_group = NULL;