This is the mail archive of the insight@sources.redhat.com mailing list for the Insight project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Patch: conditionally open source window


I had to write one last Insight patch today.  This fixes a problem
that has been annoying me for the last 3 weeks.  Here is how to see
the problem:

* Start Insight
* As soon as the source window appears, bury it.
  (I can do this quickly because I have F2 bound to bury a window.)
* Notice that Insight raises the source window again

I often start a program and then when the window appears I bury it.  I
task switch frequently so I will re-raise the window by hand when I
want it.  It annoys me when programs auto-raise their own windows
(Netscape does this sometimes and it drives me bonkers).  This is the
sort of bug that is really minor but acts as an ongoing irritant since
it interferes with habits that have been reinforced over a long period
of time.


In ManagedWin::startup, we do this:

  foreach cmd [pref get gdb/window/active] {
    eval $cmd
  }
  ManagedWin::open SrcWin

This makes sense because (I guess) there's no guarantee that the
source window already exists.  Unfortunately a side effect of
ManagedWin::open is that the window is raised, even if it already
exists.  And, given that this proc is used all over the place,
changing this is probably inadvisable.

However, I don't think we really need to re-raise the window here.  If
the source window was listed in the gdb/window/active preference, then
it was just opened and raised.  And if it wasn't in that preference
then it will be raised as a side effect of creation.

So I propose checking for the existence of the source window before
raising.  Patch appended.

Ok?

2000-12-08  Tom Tromey  <tromey@redhat.com>

	* managedwin.itb (ManagedWin::startup): Only open source window
	if it doesn't already exist.

Tom

Index: managedwin.itb
===================================================================
RCS file: /cvs/src/src/gdb/gdbtk/library/managedwin.itb,v
retrieving revision 1.7
diff -u -r1.7 managedwin.itb
--- managedwin.itb	2000/12/07 22:40:36	1.7
+++ managedwin.itb	2000/12/08 22:01:45
@@ -88,7 +88,16 @@
   foreach cmd [pref get gdb/window/active] {
     eval $cmd
   }
-  ManagedWin::open SrcWin
+  # If we open the source window, and a source window already exists,
+  # then we end up raising it twice during startup.  This yields an
+  # annoying effect for the user: if the user tries the bury the
+  # source window during startup, it will raise itself again.  This
+  # explains why we first check to see if a source window exists
+  # before trying to create it -- raising the window is an inevitable
+  # side effect of the creation process.
+  if {[llength [find SrcWin]] == 0} {
+    ManagedWin::open SrcWin
+  }
 }
 
 body ManagedWin::open_dlg {class args} {

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]