From 3f6a32f84ddbcd2a79411e680834e2ac2b9a46f7 Mon Sep 17 00:00:00 2001 From: edgrif <edgrif> Date: Fri, 30 Apr 2010 08:54:45 +0000 Subject: [PATCH] reinstate code to make sure items are put back in right place in their container list when unhighlighted. --- src/zmapWindow/zmapWindowFocus.c | 33 +++++++++++++------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/src/zmapWindow/zmapWindowFocus.c b/src/zmapWindow/zmapWindowFocus.c index d3965236a..980f6c8f1 100755 --- a/src/zmapWindow/zmapWindowFocus.c +++ b/src/zmapWindow/zmapWindowFocus.c @@ -27,9 +27,9 @@ * * Exported functions: See zmapWindow_P.h * HISTORY: - * Last edited: Jun 12 09:07 2009 (rds) + * Last edited: Apr 30 09:54 2010 (edgrif) * Created: Tue Jan 16 09:46:23 2007 (rds) - * CVS info: $Id: zmapWindowFocus.c,v 1.15 2010-03-04 15:12:58 mh17 Exp $ + * CVS info: $Id: zmapWindowFocus.c,v 1.16 2010-04-30 08:54:45 edgrif Exp $ *------------------------------------------------------------------- */ @@ -72,18 +72,11 @@ static void addFocusItemCB(gpointer data, gpointer user_data) ; static void freeFocusItems(ZMapWindowFocus focus) ; static void setFocusColumn(ZMapWindowFocus focus, FooCanvasGroup *column) ; - #ifdef ED_G_NEVER_INCLUDE_THIS_CODE static void match_frame(gpointer list_data, gpointer user_data); -#endif /* ED_G_NEVER_INCLUDE_THIS_CODE */ - - -#ifdef ED_G_NEVER_INCLUDE_THIS_CODE static FooCanvasItem *get_item_with_matching_frame(FooCanvasItem *any_item, FooCanvasItem *feature_item); #endif /* ED_G_NEVER_INCLUDE_THIS_CODE */ - - static void mask_in_overlay_swap(gpointer list_data, gpointer user_data); static void mask_in_overlay(gpointer list_data, gpointer user_data); static void set_default_highlight_colour(gpointer list_data, gpointer user_data); @@ -202,10 +195,8 @@ void zmapWindowFocusSetHotItem(ZMapWindowFocus focus, FooCanvasItem *item, gbool setFocusColumn(focus, column) ; /* N.B. May sort features. */ -#ifdef GETTING_TO_LINK /* Record where the item is in the stack of column items _after_ setFocusColumn. */ focus->hot_item_orig_index = zmapWindowContainerGetItemPosition(column, item) ; -#endif /* GETTING_TO_LINK */ /* Now raise the item to the top of its group to make sure it is visible. */ zmapWindowRaiseItem(item) ; @@ -300,24 +291,26 @@ void zmapWindowFocusRemoveFocusItem(ZMapWindowFocus focus, FooCanvasItem *item) if (focus->focus_item_set) { FooCanvasGroup *container_parent ; -#ifdef GETTING_TO_LINK + int curr_index, position ; -#endif /* GETTING_TO_LINK */ + if ((remove = g_list_find_custom(focus->focus_item_set, item, find_item))) { - gonner = (ZMapWindowFocusItemArea)(remove->data); - focus->focus_item_set = g_list_remove(focus->focus_item_set, - gonner); + gonner = (ZMapWindowFocusItemArea)(remove->data) ; + + focus->focus_item_set = g_list_remove(focus->focus_item_set, gonner) ; + FocusUnmaskOverlay(focus) ; + zmapWindowFocusItemAreaDestroy(gonner) ; + /* Try to put it back in its original position, note if this function is called during destroy * the features list may already have gone so we cannot put it back.... */ - container_parent =(FooCanvasGroup *) zmapWindowContainerCanvasItemGetContainer(item) ; + container_parent = zmapWindowContainerCanvasItemGetContainer(item) ; -#ifdef GETTING_TO_LINK - if ((curr_index = zmapWindowContainerGetItemPosition(container_parent, item))) + if ((curr_index = zmapWindowContainerGetItemPosition(container_parent, item)) != -1) { position = curr_index - focus->hot_item_orig_index ; @@ -325,7 +318,7 @@ void zmapWindowFocusRemoveFocusItem(ZMapWindowFocus focus, FooCanvasItem *item) focus->hot_item_orig_index = 0 ; } -#endif /* GETTING_TO_LINK */ + } } -- GitLab