* tuiSourceWin.c (tuiSetHasBreakAt): Use filename for breakpoint
authorStephane Carrez <stcarrez@nerim.fr>
Sun, 25 Aug 2002 11:00:46 +0000 (11:00 +0000)
committerStephane Carrez <stcarrez@nerim.fr>
Sun, 25 Aug 2002 11:00:46 +0000 (11:00 +0000)
comparison; cleanup.
* tuiSource.c (tuiSetSourceContent): Set window title and filename.
* tuiGeneralWin.c (boxWin): Print optional title on top of window.
* tuiData.h (TuiSourceInfo): Add filename member.
(TuiGenWinInfo): Add title member.
* tuiData.c (initGenericPart): Clear title.
(freeWindow): Free title and filename; remove unused locals.
(initWinInfo): Clear filename.
(tuiDelWindow): Free it; remove unused locals.

gdb/tui/ChangeLog
gdb/tui/tuiData.c
gdb/tui/tuiData.h
gdb/tui/tuiGeneralWin.c
gdb/tui/tuiSource.c
gdb/tui/tuiSourceWin.c

index 37fb3f88ae2bcbdedcace4be43df8575c65eaed7..ef711700e6586130df9bf91f9b9ed8e3d0c151e3 100644 (file)
@@ -1,3 +1,16 @@
+2002-08-25  Stephane Carrez  <stcarrez@nerim.fr>
+
+       * tuiSourceWin.c (tuiSetHasBreakAt): Use filename for breakpoint
+       comparison; cleanup.
+       * tuiSource.c (tuiSetSourceContent): Set window title and filename.
+       * tuiGeneralWin.c (boxWin): Print optional title on top of window.
+       * tuiData.h (TuiSourceInfo): Add filename member.
+       (TuiGenWinInfo): Add title member.
+       * tuiData.c (initGenericPart): Clear title.
+       (freeWindow): Free title and filename; remove unused locals.
+       (initWinInfo): Clear filename.
+       (tuiDelWindow): Free it; remove unused locals.
+
 2002-08-25  Stephane Carrez  <stcarrez@nerim.fr>
 
        * tuiStack.h (tuiGetLocatorFilename): Don't declare.
index 30efba8b11c661c2645388bcfe03988cbc7e0dc2..45508e061b894c9220dd7c59a8292dfeafda218a 100644 (file)
@@ -843,9 +843,8 @@ initGenericPart (TuiGenWinInfoPtr win)
   win->content = (OpaquePtr) NULL;
   win->contentInUse =
     win->isVisible = FALSE;
-
-  return;
-}                              /* initGenericPart */
+  win->title = 0;
+}
 
 
 /*
@@ -914,6 +913,7 @@ initWinInfo (TuiWinInfoPtr winInfo)
       winInfo->detail.sourceInfo.hasLocator = FALSE;
       winInfo->detail.sourceInfo.horizontalOffset = 0;
       winInfo->detail.sourceInfo.startLineOrAddr.addr = 0;
+      winInfo->detail.sourceInfo.filename = 0;
       break;
     case DATA_WIN:
       winInfo->detail.dataDisplayInfo.dataContent = (TuiWinContent) NULL;
@@ -1040,19 +1040,13 @@ addContentElements (TuiGenWinInfoPtr winInfo, int numElements)
 }                              /* addContentElements */
 
 
-/*
-   **  tuiDelWindow().
-   **     Delete all curses windows associated with winInfo, leaving everything
-   **     else in tact.
- */
+/* Delete all curses windows associated with winInfo, leaving everything
+   else intact.  */
 void
 tuiDelWindow (TuiWinInfoPtr winInfo)
 {
-  Opaque detail;
-  int i;
   TuiGenWinInfoPtr genericWin;
 
-
   switch (winInfo->generic.type)
     {
     case SRC_WIN:
@@ -1064,6 +1058,11 @@ tuiDelWindow (TuiWinInfoPtr winInfo)
          genericWin->handle = (WINDOW *) NULL;
          genericWin->isVisible = FALSE;
        }
+      if (winInfo->detail.sourceInfo.filename)
+        {
+          xfree (winInfo->detail.sourceInfo.filename);
+          winInfo->detail.sourceInfo.filename = 0;
+        }
       genericWin = winInfo->detail.sourceInfo.executionInfo;
       if (genericWin != (TuiGenWinInfoPtr) NULL)
        {
@@ -1075,14 +1074,10 @@ tuiDelWindow (TuiWinInfoPtr winInfo)
     case DATA_WIN:
       if (winInfo->generic.content != (OpaquePtr) NULL)
        {
-         int i;
-
-         tuiDelDataWindows (
-                             winInfo->detail.dataDisplayInfo.regsContent,
-                         winInfo->detail.dataDisplayInfo.regsContentCount);
-         tuiDelDataWindows (
-                             winInfo->detail.dataDisplayInfo.dataContent,
-                         winInfo->detail.dataDisplayInfo.dataContentCount);
+         tuiDelDataWindows (winInfo->detail.dataDisplayInfo.regsContent,
+                             winInfo->detail.dataDisplayInfo.regsContentCount);
+         tuiDelDataWindows (winInfo->detail.dataDisplayInfo.dataContent,
+                             winInfo->detail.dataDisplayInfo.dataContentCount);
        }
       break;
     default:
@@ -1094,9 +1089,7 @@ tuiDelWindow (TuiWinInfoPtr winInfo)
       winInfo->generic.handle = (WINDOW *) NULL;
       winInfo->generic.isVisible = FALSE;
     }
-
-  return;
-}                              /* tuiDelWindow */
+}
 
 
 /*
@@ -1105,11 +1098,8 @@ tuiDelWindow (TuiWinInfoPtr winInfo)
 void
 freeWindow (TuiWinInfoPtr winInfo)
 {
-  Opaque detail;
-  int i;
   TuiGenWinInfoPtr genericWin;
 
-
   switch (winInfo->generic.type)
     {
     case SRC_WIN:
@@ -1121,6 +1111,11 @@ freeWindow (TuiWinInfoPtr winInfo)
          genericWin->handle = (WINDOW *) NULL;
        }
       freeWinContent (genericWin);
+      if (winInfo->detail.sourceInfo.filename)
+        {
+          xfree (winInfo->detail.sourceInfo.filename);
+          winInfo->detail.sourceInfo.filename = 0;
+        }
       genericWin = winInfo->detail.sourceInfo.executionInfo;
       if (genericWin != (TuiGenWinInfoPtr) NULL)
        {
@@ -1161,10 +1156,10 @@ freeWindow (TuiWinInfoPtr winInfo)
       winInfo->generic.handle = (WINDOW *) NULL;
       freeWinContent (&winInfo->generic);
     }
+  if (winInfo->generic.title)
+    xfree (winInfo->generic.title);
   xfree (winInfo);
-
-  return;
-}                              /* freeWindow */
+}
 
 
 /*
index 89779b42e3b5a312ce001b53ae1908287a20bb4a..36d7853f736da38743bf1aecfe9364f43a2e0837 100644 (file)
@@ -1,5 +1,5 @@
 /* TUI data manipulation routines.
-   Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
    Contributed by Hewlett-Packard Company.
 
    This file is part of GDB.
@@ -42,6 +42,7 @@
         int viewportHeight;    /* viewport height */
         int lastVisibleLine;   /* index of last visible line */
         int isVisible;         /* whether the window is visible or not */
+         char* title;          /* Window title to display.  */
        }
 TuiGenWinInfo, *TuiGenWinInfoPtr;
 
@@ -244,6 +245,7 @@ typedef struct _TuiSourceInfo
     TuiGenWinInfoPtr executionInfo;    /* execution information window */
     int horizontalOffset;      /* used for horizontal scroll */
     TuiLineOrAddress startLineOrAddr;
+    char* filename;
   }
 TuiSourceInfo, *TuiSourceInfoPtr;
 
index b8f3b0c50736b77bda0b2d978d1546df394f2668..e250ca2ac78c83f58d4798c52f0138c53625db01 100644 (file)
@@ -118,6 +118,8 @@ boxWin (TuiGenWinInfoPtr winInfo, int highlightFlag)
                tui_border_hline, tui_border_hline,
                tui_border_ulcorner, tui_border_urcorner,
                tui_border_llcorner, tui_border_lrcorner);
+      if (winInfo->title)
+        mvwaddstr (win, 0, 3, winInfo->title);
       wattroff (win, attrs);
     }
 }
index 1552ac79d0d140c727da7d9011a7ab4de0e7a7d4..f844b3639d2a67ce258140a2583a1a303f6d089b 100644 (file)
 #include "tuiSource.h"
 
 
-/*****************************************
-** EXTERNAL DATA DECLS                    **
-******************************************/
-extern int current_source_line;
-extern struct symtab *current_source_symtab;
-
-
 /*****************************************
 ** STATIC LOCAL FUNCTIONS FORWARD DECLS    **
 ******************************************/
@@ -68,19 +61,6 @@ extern struct symtab *current_source_symtab;
 static struct breakpoint *_hasBreak (char *, int);
 
 
-/*****************************************
-** STATIC LOCAL DATA                    **
-******************************************/
-
-
-/*****************************************
-** PUBLIC FUNCTIONS                     **
-******************************************/
-
-/*********************************
-** SOURCE/DISASSEM  FUNCTIONS    **
-*********************************/
-
 /*
    ** tuiSetSourceContent().
    **    Function to display source in the source window.
@@ -94,7 +74,7 @@ tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
     {
       register FILE *stream;
       register int i, desc, c, lineWidth, nlines;
-      register char *srcLine;
+      register char *srcLine = 0;
 
       if ((ret = tuiAllocSourceBuffer (srcWin)) == TUI_SUCCESS)
        {
@@ -136,17 +116,24 @@ tuiSetSourceContent (struct symtab *s, int lineNo, int noerror)
                {
                  register int offset, curLineNo, curLine, curLen, threshold;
                  TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
-                 /*
-                    ** Determine the threshold for the length of the line
-                    ** and the offset to start the display
-                  */
-                 offset = srcWin->detail.sourceInfo.horizontalOffset;
+                  TuiSourceInfoPtr src = &srcWin->detail.sourceInfo;
+
+                  if (srcWin->generic.title)
+                    xfree (srcWin->generic.title);
+                  srcWin->generic.title = xstrdup (s->filename);
+
+                  if (src->filename)
+                    xfree (src->filename);
+                  src->filename = xstrdup (s->filename);
+
+                 /* Determine the threshold for the length of the line
+                     and the offset to start the display.  */
+                 offset = src->horizontalOffset;
                  threshold = (lineWidth - 1) + offset;
                  stream = fdopen (desc, FOPEN_RT);
                  clearerr (stream);
                  curLine = 0;
-                 curLineNo =
-                   srcWin->detail.sourceInfo.startLineOrAddr.lineNo = lineNo;
+                 curLineNo = src->startLineOrAddr.lineNo = lineNo;
                  if (offset > 0)
                    srcLine = (char *) xmalloc (
                                           (threshold + 1) * sizeof (char));
index 1f17d30abdc70529afd5d1869f4ecee0d5703764..59e5f3b7866ea5499fb7b3b41766a851d6f84b04 100644 (file)
@@ -430,19 +430,11 @@ tuiSetHasBreakAt (struct breakpoint *bp, TuiWinInfoPtr winInfo, int hasBreak)
 
       if (winInfo == srcWin)
        {
-         char *fileNameDisplayed = (char *) NULL;
+          TuiSourceInfoPtr src = &winInfo->detail.sourceInfo;
 
-         if (((TuiWinElementPtr)
-              locator->content[0])->whichElement.locator.fileName !=
-             (char *) NULL)
-           fileNameDisplayed = ((TuiWinElementPtr)
-                       locator->content[0])->whichElement.locator.fileName;
-         else if (current_source_symtab != (struct symtab *) NULL)
-           fileNameDisplayed = current_source_symtab->filename;
-
-         gotIt = (fileNameDisplayed != (char *) NULL &&
+         gotIt = (src->filename != (char *) NULL &&
                    bp->source_file != NULL &&
-                  (strcmp (bp->source_file, fileNameDisplayed) == 0) &&
+                  (strcmp (bp->source_file, src->filename) == 0) &&
                   content[i]->whichElement.source.lineOrAddr.lineNo ==
                   bp->line_number);
        }