diff lwlib/xlwtabs.c @ 440:8de8e3f6228a r21-2-28

Import from CVS: tag r21-2-28
author cvs
date Mon, 13 Aug 2007 11:33:38 +0200
parents 080151679be2
children abe6d1db359e
line wrap: on
line diff
--- a/lwlib/xlwtabs.c	Mon Aug 13 11:32:27 2007 +0200
+++ b/lwlib/xlwtabs.c	Mon Aug 13 11:33:38 2007 +0200
@@ -980,6 +980,12 @@
 	  tw->tabs.topWidget->core.being_destroyed ) )
       tw->tabs.topWidget = NULL ;
 
+    /* Check whether the highlight tab is still valid. */
+    if( tw->tabs.hilight != NULL &&
+        ( !XtIsManaged(tw->tabs.hilight) ||
+	  tw->tabs.hilight->core.being_destroyed ) )
+      tw->tabs.hilight = NULL ;
+
     GetPreferredSizes(tw) ;
     MakeSizeRequest(tw) ;
 
@@ -1255,6 +1261,7 @@
 	if( !XtIsRealized(w) ) {
 	  tw->tabs.topWidget = w ;
 	  tw->tabs.needs_layout = True ;
+	  tw->tabs.hilight = NULL; /* The highlight tab might disappear. */
 	  return ;
 	}
 
@@ -1265,6 +1272,14 @@
 #endif
 
 	tab = (TabsConstraints) w->core.constraints ;
+
+	/* Unhighlight before we start messing with the stacking order. */
+	if( tw->tabs.hilight != NULL )
+	  {
+	    DrawHighlight(tw, tw->tabs.hilight, True) ;
+	    tw->tabs.hilight = NULL;
+	  }
+
 	if( tab->tabs.row == 0 )
 	{
 	  /* Easy case; undraw current top, undraw new top, assign new
@@ -1307,8 +1322,6 @@
 
 	if( XtIsRealized(t) && w != tw->tabs.hilight )
 	{
-	  if( tw->tabs.hilight != NULL )
-	    DrawHighlight(tw, tw->tabs.hilight, True) ;
 	  if( w != NULL )
 	    DrawHighlight(tw, w, False) ;
 	}