OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [branches/] [oc/] [gdb-5.0/] [gdb/] [tui/] [tuiLayout.c] - Blame information for rev 106

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 106 markom
/*
2
   ** tuiLayout.c
3
   ** This module contains procedures for handling the layout of the windows.
4
 */
5
 
6
 
7
#include "defs.h"
8
#include "command.h"
9
#include "symtab.h"
10
#include "frame.h"
11
 
12
#include "tui.h"
13
#include "tuiData.h"
14
#include "tuiGeneralWin.h"
15
#include "tuiStack.h"
16
#include "tuiRegs.h"
17
#include "tuiDisassem.h"
18
 
19
/*******************************
20
** Static Local Decls
21
********************************/
22
 
23
static void _initGenWinInfo PARAMS
24
  ((TuiGenWinInfoPtr, TuiWinType, int, int, int, int));
25
static void _initAndMakeWin PARAMS
26
  ((Opaque *, TuiWinType, int, int, int, int, int));
27
static void _showSourceOrDisassemAndCommand PARAMS
28
  ((TuiLayoutType));
29
static void _makeSourceOrDisassemWindow PARAMS
30
  ((TuiWinInfoPtr *, TuiWinType, int, int));
31
static void _makeCommandWindow PARAMS ((TuiWinInfoPtr *, int, int));
32
static void _makeSourceWindow PARAMS ((TuiWinInfoPtr *, int, int));
33
static void _makeDisassemWindow PARAMS
34
  ((TuiWinInfoPtr *, int, int));
35
static void _makeDataWindow PARAMS ((TuiWinInfoPtr *, int, int));
36
static void _showSourceCommand PARAMS ((void));
37
static void _showDisassemCommand PARAMS ((void));
38
static void _showSourceDisassemCommand PARAMS ((void));
39
static void _showData PARAMS ((TuiLayoutType));
40
static TuiLayoutType _nextLayout PARAMS ((void));
41
static TuiLayoutType _prevLayout PARAMS ((void));
42
static void _tuiLayout_command PARAMS ((char *, int));
43
static void _tuiToggleLayout_command PARAMS ((char *, int));
44
static void _tui_vToggleLayout_command PARAMS ((va_list));
45
static void _tuiToggleSplitLayout_command PARAMS ((char *, int));
46
static void _tui_vToggleSplitLayout_command PARAMS ((va_list));
47
static Opaque _extractDisplayStartAddr PARAMS ((void));
48
static void _tuiHandleXDBLayout PARAMS ((TuiLayoutDefPtr));
49
static TuiStatus _tuiSetLayoutTo PARAMS ((char *));
50
 
51
 
52
/***************************************
53
** DEFINITIONS
54
***************************************/
55
 
56
#define LAYOUT_USAGE     "Usage: layout prev | next | <layout_name> \n"
57
 
58
/***************************************
59
** Static Local Data
60
***************************************/
61
static TuiLayoutType lastLayout = UNDEFINED_LAYOUT;
62
 
63
/***************************************
64
** PUBLIC FUNCTIONS
65
***************************************/
66
 
67
/*
68
   ** showLayout().
69
   **        Show the screen layout defined
70
 */
71
void
72
#ifdef __STDC__
73
showLayout (
74
             TuiLayoutType layout)
75
#else
76
showLayout (layout)
77
     TuiLayoutType layout;
78
#endif
79
{
80
  TuiLayoutType curLayout = currentLayout ();
81
 
82
  if (layout != curLayout)
83
    {
84
      /*
85
         ** Since the new layout may cause changes in window size, we
86
         ** should free the content and reallocate on next display of
87
         ** source/asm
88
       */
89
      tuiClearAllSourceWinsContent (NO_EMPTY_SOURCE_PROMPT);
90
      freeAllSourceWinsContent ();
91
      clearSourceWindows ();
92
      if (layout == SRC_DATA_COMMAND || layout == DISASSEM_DATA_COMMAND)
93
        {
94
          _showData (layout);
95
          refreshAll (winList);
96
        }
97
      else
98
        {
99
          /* First make the current layout be invisible */
100
          m_allBeInvisible ();
101
          m_beInvisible (locatorWinInfoPtr ());
102
 
103
          switch (layout)
104
            {
105
              /* Now show the new layout */
106
            case SRC_COMMAND:
107
              _showSourceCommand ();
108
              addToSourceWindows (srcWin);
109
              break;
110
            case DISASSEM_COMMAND:
111
              _showDisassemCommand ();
112
              addToSourceWindows (disassemWin);
113
              break;
114
            case SRC_DISASSEM_COMMAND:
115
              _showSourceDisassemCommand ();
116
              addToSourceWindows (srcWin);
117
              addToSourceWindows (disassemWin);
118
              break;
119
            default:
120
              break;
121
            }
122
        }
123
    }
124
 
125
  return;
126
}                               /* showLayout */
127
 
128
 
129
/*
130
   ** tuiSetLayout()
131
   **    Function to set the layout to SRC_COMMAND, DISASSEM_COMMAND,
132
   **    SRC_DISASSEM_COMMAND, SRC_DATA_COMMAND, or DISASSEM_DATA_COMMAND.
133
   **    If the layout is SRC_DATA_COMMAND, DISASSEM_DATA_COMMAND, or
134
   **    UNDEFINED_LAYOUT, then the data window is populated according
135
   **    to regsDisplayType.
136
 */
137
TuiStatus
138
#ifdef __STDC__
139
tuiSetLayout (
140
               TuiLayoutType layoutType,
141
               TuiRegisterDisplayType regsDisplayType)
142
#else
143
tuiSetLayout (layoutType, regsDisplayType)
144
     TuiLayoutType layoutType;
145
     TuiRegisterDisplayType regsDisplayType;
146
#endif
147
{
148
  TuiStatus status = TUI_SUCCESS;
149
 
150
  if (layoutType != UNDEFINED_LAYOUT || regsDisplayType != TUI_UNDEFINED_REGS)
151
    {
152
      TuiLayoutType curLayout = currentLayout (), newLayout = UNDEFINED_LAYOUT;
153
      int regsPopulate = FALSE;
154
      Opaque addr = _extractDisplayStartAddr ();
155
      TuiWinInfoPtr newWinWithFocus = (TuiWinInfoPtr) NULL, winWithFocus = tuiWinWithFocus ();
156
      TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
157
 
158
 
159
      if (layoutType == UNDEFINED_LAYOUT &&
160
          regsDisplayType != TUI_UNDEFINED_REGS)
161
        {
162
          if (curLayout == SRC_DISASSEM_COMMAND)
163
            newLayout = DISASSEM_DATA_COMMAND;
164
          else if (curLayout == SRC_COMMAND || curLayout == SRC_DATA_COMMAND)
165
            newLayout = SRC_DATA_COMMAND;
166
          else if (curLayout == DISASSEM_COMMAND ||
167
                   curLayout == DISASSEM_DATA_COMMAND)
168
            newLayout = DISASSEM_DATA_COMMAND;
169
        }
170
      else
171
        newLayout = layoutType;
172
 
173
      regsPopulate = (newLayout == SRC_DATA_COMMAND ||
174
                      newLayout == DISASSEM_DATA_COMMAND ||
175
                      regsDisplayType != TUI_UNDEFINED_REGS);
176
      if (newLayout != curLayout || regsDisplayType != TUI_UNDEFINED_REGS)
177
        {
178
          if (newLayout != curLayout)
179
            {
180
              if (winWithFocus != cmdWin)
181
                tuiClearWinFocus ();
182
              showLayout (newLayout);
183
              /*
184
                 ** Now determine where focus should be
185
               */
186
              if (winWithFocus != cmdWin)
187
                {
188
                  switch (newLayout)
189
                    {
190
                    case SRC_COMMAND:
191
                      tuiSetWinFocusTo (srcWin);
192
                      layoutDef->displayMode = SRC_WIN;
193
                      layoutDef->split = FALSE;
194
                      break;
195
                    case DISASSEM_COMMAND:
196
                      /* the previous layout was not showing
197
                         ** code. this can happen if there is no
198
                         ** source available:
199
                         ** 1. if the source file is in another dir OR
200
                         ** 2. if target was compiled without -g
201
                         ** We still want to show the assembly though!
202
                       */
203
                      addr = vcatch_errors ((OpaqueFuncPtr)
204
                                            tuiGetBeginAsmAddress);
205
                      tuiSetWinFocusTo (disassemWin);
206
                      layoutDef->displayMode = DISASSEM_WIN;
207
                      layoutDef->split = FALSE;
208
                      break;
209
                    case SRC_DISASSEM_COMMAND:
210
                      /* the previous layout was not showing
211
                         ** code. this can happen if there is no
212
                         ** source available:
213
                         ** 1. if the source file is in another dir OR
214
                         ** 2. if target was compiled without -g
215
                         ** We still want to show the assembly though!
216
                       */
217
                      addr = vcatch_errors ((OpaqueFuncPtr)
218
                                            tuiGetBeginAsmAddress);
219
                      if (winWithFocus == srcWin)
220
                        tuiSetWinFocusTo (srcWin);
221
                      else
222
                        tuiSetWinFocusTo (disassemWin);
223
                      layoutDef->split = TRUE;
224
                      break;
225
                    case SRC_DATA_COMMAND:
226
                      if (winWithFocus != dataWin)
227
                        tuiSetWinFocusTo (srcWin);
228
                      else
229
                        tuiSetWinFocusTo (dataWin);
230
                      layoutDef->displayMode = SRC_WIN;
231
                      layoutDef->split = FALSE;
232
                      break;
233
                    case DISASSEM_DATA_COMMAND:
234
                      /* the previous layout was not showing
235
                         ** code. this can happen if there is no
236
                         ** source available:
237
                         ** 1. if the source file is in another dir OR
238
                         ** 2. if target was compiled without -g
239
                         ** We still want to show the assembly though!
240
                       */
241
                      addr = vcatch_errors ((OpaqueFuncPtr)
242
                                            tuiGetBeginAsmAddress);
243
                      if (winWithFocus != dataWin)
244
                        tuiSetWinFocusTo (disassemWin);
245
                      else
246
                        tuiSetWinFocusTo (dataWin);
247
                      layoutDef->displayMode = DISASSEM_WIN;
248
                      layoutDef->split = FALSE;
249
                      break;
250
                    default:
251
                      break;
252
                    }
253
                }
254
              if (newWinWithFocus != (TuiWinInfoPtr) NULL)
255
                tuiSetWinFocusTo (newWinWithFocus);
256
              /*
257
                 ** Now update the window content
258
               */
259
              if (!regsPopulate &&
260
                  (newLayout == SRC_DATA_COMMAND ||
261
                   newLayout == DISASSEM_DATA_COMMAND))
262
                tuiDisplayAllData ();
263
 
264
              tuiUpdateSourceWindowsWithAddr (addr);
265
            }
266
          if (regsPopulate)
267
            {
268
              layoutDef->regsDisplayType =
269
                (regsDisplayType == TUI_UNDEFINED_REGS ?
270
                 TUI_GENERAL_REGS : regsDisplayType);
271
              tuiShowRegisters (layoutDef->regsDisplayType);
272
            }
273
        }
274
    }
275
  else
276
    status = TUI_FAILURE;
277
 
278
  return status;
279
}                               /* tuiSetLayout */
280
 
281
 
282
/*
283
   ** tui_vSetLayoutTo()
284
   **        Function to set the layout to SRC, ASM, SPLIT, NEXT, PREV, DATA,
285
   **        REGS, $REGS, $GREGS, $FREGS, $SREGS with arguments in a va_list
286
 */
287
TuiStatus
288
#ifdef __STDC__
289
tui_vSetLayoutTo (
290
                   va_list args)
291
#else
292
tui_vSetLayoutTo (args)
293
     va_list args;
294
#endif
295
{
296
  char *layoutName;
297
 
298
  layoutName = va_arg (args, char *);
299
 
300
  return (_tuiSetLayoutTo (layoutName));
301
}                               /* tui_vSetLayoutTo */
302
 
303
 
304
/*
305
   ** tuiAddWinToLayout().
306
   **        Add the specified window to the layout in a logical way.
307
   **        This means setting up the most logical layout given the
308
   **        window to be added.
309
 */
310
void
311
#ifdef __STDC__
312
tuiAddWinToLayout (
313
                    TuiWinType type)
314
#else
315
tuiAddWinToLayout (type)
316
     TuiWinType type;
317
#endif
318
{
319
  TuiLayoutType curLayout = currentLayout ();
320
 
321
  switch (type)
322
    {
323
    case SRC_WIN:
324
      if (curLayout != SRC_COMMAND &&
325
          curLayout != SRC_DISASSEM_COMMAND &&
326
          curLayout != SRC_DATA_COMMAND)
327
        {
328
          clearSourceWindowsDetail ();
329
          if (curLayout == DISASSEM_DATA_COMMAND)
330
            showLayout (SRC_DATA_COMMAND);
331
          else
332
            showLayout (SRC_COMMAND);
333
        }
334
      break;
335
    case DISASSEM_WIN:
336
      if (curLayout != DISASSEM_COMMAND &&
337
          curLayout != SRC_DISASSEM_COMMAND &&
338
          curLayout != DISASSEM_DATA_COMMAND)
339
        {
340
          clearSourceWindowsDetail ();
341
          if (curLayout == SRC_DATA_COMMAND)
342
            showLayout (DISASSEM_DATA_COMMAND);
343
          else
344
            showLayout (DISASSEM_COMMAND);
345
        }
346
      break;
347
    case DATA_WIN:
348
      if (curLayout != SRC_DATA_COMMAND &&
349
          curLayout != DISASSEM_DATA_COMMAND)
350
        {
351
          if (curLayout == DISASSEM_COMMAND)
352
            showLayout (DISASSEM_DATA_COMMAND);
353
          else
354
            showLayout (SRC_DATA_COMMAND);
355
        }
356
      break;
357
    default:
358
      break;
359
    }
360
 
361
  return;
362
}                               /* tuiAddWinToLayout */
363
 
364
 
365
/*
366
   ** tui_vAddWinToLayout().
367
   **        Add the specified window to the layout in a logical way,
368
   **        with arguments in a va_list.
369
 */
370
void
371
#ifdef __STDC__
372
tui_vAddWinToLayout (
373
                      va_list args)
374
#else
375
tui_vAddWinToLayout (args)
376
     va_list args;
377
#endif
378
{
379
  TuiWinType type = va_arg (args, TuiWinType);
380
 
381
  tuiAddWinToLayout (type);
382
 
383
  return;
384
}                               /* tui_vAddWinToLayout */
385
 
386
 
387
/*
388
   ** tuiDefaultWinHeight().
389
   **        Answer the height of a window.  If it hasn't been created yet,
390
   **        answer what the height of a window would be based upon its
391
   **        type and the layout.
392
 */
393
int
394
#ifdef __STDC__
395
tuiDefaultWinHeight (
396
                      TuiWinType type,
397
                      TuiLayoutType layout)
398
#else
399
tuiDefaultWinHeight (type, layout)
400
     TuiWinType type;
401
     TuiLayoutType layout;
402
#endif
403
{
404
  int h;
405
 
406
  if (winList[type] != (TuiWinInfoPtr) NULL)
407
    h = winList[type]->generic.height;
408
  else
409
    {
410
      switch (layout)
411
        {
412
        case SRC_COMMAND:
413
        case DISASSEM_COMMAND:
414
          if (m_winPtrIsNull (cmdWin))
415
            h = termHeight () / 2;
416
          else
417
            h = termHeight () - cmdWin->generic.height;
418
          break;
419
        case SRC_DISASSEM_COMMAND:
420
        case SRC_DATA_COMMAND:
421
        case DISASSEM_DATA_COMMAND:
422
          if (m_winPtrIsNull (cmdWin))
423
            h = termHeight () / 3;
424
          else
425
            h = (termHeight () - cmdWin->generic.height) / 2;
426
          break;
427
        default:
428
          h = 0;
429
          break;
430
        }
431
    }
432
 
433
  return h;
434
}                               /* tuiDefaultWinHeight */
435
 
436
 
437
/*
438
   ** tuiDefaultWinViewportHeight().
439
   **        Answer the height of a window.  If it hasn't been created yet,
440
   **        answer what the height of a window would be based upon its
441
   **        type and the layout.
442
 */
443
int
444
#ifdef __STDC__
445
tuiDefaultWinViewportHeight (
446
                              TuiWinType type,
447
                              TuiLayoutType layout)
448
#else
449
tuiDefaultWinViewportHeight (type, layout)
450
     TuiWinType type;
451
     TuiLayoutType layout;
452
#endif
453
{
454
  int h;
455
 
456
  h = tuiDefaultWinHeight (type, layout);
457
 
458
  if (winList[type] == cmdWin)
459
    h -= 1;
460
  else
461
    h -= 2;
462
 
463
  return h;
464
}                               /* tuiDefaultWinViewportHeight */
465
 
466
 
467
/*
468
   ** _initialize_tuiLayout().
469
   **        Function to initialize gdb commands, for tui window layout
470
   **        manipulation.
471
 */
472
void
473
_initialize_tuiLayout ()
474
{
475
  if (tui_version)
476
    {
477
      add_com ("layout", class_tui, _tuiLayout_command,
478
               "Change the layout of windows.\n\
479
Usage: layout prev | next | <layout_name> \n\
480
Layout names are:\n\
481
   src   : Displays source and command windows.\n\
482
   asm   : Displays disassembly and command windows.\n\
483
   split : Displays source, disassembly and command windows.\n\
484
   regs  : Displays register window. If existing layout\n\
485
           is source/command or assembly/command, the \n\
486
           register window is displayed. If the\n\
487
           source/assembly/command (split) is displayed, \n\
488
           the register window is displayed with \n\
489
           the window that has current logical focus.\n");
490
      if (xdb_commands)
491
        {
492
          add_com ("td", class_tui, _tuiToggleLayout_command,
493
                   "Toggle between Source/Command and Disassembly/Command layouts.\n");
494
          add_com ("ts", class_tui, _tuiToggleSplitLayout_command,
495
                   "Toggle between Source/Command or Disassembly/Command and \n\
496
Source/Disassembly/Command layouts.\n");
497
        }
498
    }
499
 
500
  return;
501
}                               /* _intialize_tuiLayout */
502
 
503
 
504
/*************************
505
** STATIC LOCAL FUNCTIONS
506
**************************/
507
 
508
 
509
/*
510
   ** _tuiSetLayoutTo()
511
   **    Function to set the layout to SRC, ASM, SPLIT, NEXT, PREV, DATA, REGS,
512
   **        $REGS, $GREGS, $FREGS, $SREGS.
513
 */
514
static TuiStatus
515
#ifdef __STDC__
516
_tuiSetLayoutTo (
517
                  char *layoutName)
518
#else
519
_tuiSetLayoutTo (layoutName)
520
     char *layoutName;
521
#endif
522
{
523
  TuiStatus status = TUI_SUCCESS;
524
 
525
  if (layoutName != (char *) NULL)
526
    {
527
      register int i;
528
      register char *bufPtr;
529
      TuiLayoutType newLayout = UNDEFINED_LAYOUT;
530
      TuiRegisterDisplayType dpyType = TUI_UNDEFINED_REGS;
531
      TuiLayoutType curLayout = currentLayout ();
532
 
533
      bufPtr = (char *) tuiStrDup (layoutName);
534
      for (i = 0; (i < strlen (layoutName)); i++)
535
        bufPtr[i] = toupper (bufPtr[i]);
536
 
537
      /* First check for ambiguous input */
538
      if (strlen (bufPtr) <= 1 && (*bufPtr == 'S' || *bufPtr == '$'))
539
        {
540
          warning ("Ambiguous command input.\n");
541
          status = TUI_FAILURE;
542
        }
543
      else
544
        {
545
          if (subsetCompare (bufPtr, "SRC"))
546
            newLayout = SRC_COMMAND;
547
          else if (subsetCompare (bufPtr, "ASM"))
548
            newLayout = DISASSEM_COMMAND;
549
          else if (subsetCompare (bufPtr, "SPLIT"))
550
            newLayout = SRC_DISASSEM_COMMAND;
551
          else if (subsetCompare (bufPtr, "REGS") ||
552
                   subsetCompare (bufPtr, TUI_GENERAL_SPECIAL_REGS_NAME) ||
553
                   subsetCompare (bufPtr, TUI_GENERAL_REGS_NAME) ||
554
                   subsetCompare (bufPtr, TUI_FLOAT_REGS_NAME) ||
555
                   subsetCompare (bufPtr, TUI_SPECIAL_REGS_NAME))
556
            {
557
              if (curLayout == SRC_COMMAND || curLayout == SRC_DATA_COMMAND)
558
                newLayout = SRC_DATA_COMMAND;
559
              else
560
                newLayout = DISASSEM_DATA_COMMAND;
561
 
562
/* could ifdef out the following code. when compile with -z, there are null
563
   pointer references that cause a core dump if 'layout regs' is the first
564
   layout command issued by the user. HP has asked us to hook up this code
565
   - edie epstein
566
 */
567
              if (subsetCompare (bufPtr, TUI_FLOAT_REGS_NAME))
568
                {
569
                  if (dataWin->detail.dataDisplayInfo.regsDisplayType !=
570
                      TUI_SFLOAT_REGS &&
571
                      dataWin->detail.dataDisplayInfo.regsDisplayType !=
572
                      TUI_DFLOAT_REGS)
573
                    dpyType = TUI_SFLOAT_REGS;
574
                  else
575
                    dpyType =
576
                      dataWin->detail.dataDisplayInfo.regsDisplayType;
577
                }
578
              else if (subsetCompare (bufPtr,
579
                                      TUI_GENERAL_SPECIAL_REGS_NAME))
580
                dpyType = TUI_GENERAL_AND_SPECIAL_REGS;
581
              else if (subsetCompare (bufPtr, TUI_GENERAL_REGS_NAME))
582
                dpyType = TUI_GENERAL_REGS;
583
              else if (subsetCompare (bufPtr, TUI_SPECIAL_REGS_NAME))
584
                dpyType = TUI_SPECIAL_REGS;
585
              else
586
                {
587
                  if (dataWin->detail.dataDisplayInfo.regsDisplayType !=
588
                      TUI_UNDEFINED_REGS)
589
                    dpyType =
590
                      dataWin->detail.dataDisplayInfo.regsDisplayType;
591
                  else
592
                    dpyType = TUI_GENERAL_REGS;
593
                }
594
 
595
/* end of potential ifdef
596
 */
597
 
598
/* if ifdefed out code above, then assume that the user wishes to display the
599
   general purpose registers
600
 */
601
 
602
/*              dpyType = TUI_GENERAL_REGS;
603
 */
604
            }
605
          else if (subsetCompare (bufPtr, "NEXT"))
606
            newLayout = _nextLayout ();
607
          else if (subsetCompare (bufPtr, "PREV"))
608
            newLayout = _prevLayout ();
609
          else
610
            status = TUI_FAILURE;
611
          free (bufPtr);
612
 
613
          tuiSetLayout (newLayout, dpyType);
614
        }
615
    }
616
  else
617
    status = TUI_FAILURE;
618
 
619
  return status;
620
}                               /* _tuiSetLayoutTo */
621
 
622
 
623
static Opaque
624
#ifdef __STDC__
625
_extractDisplayStartAddr (void)
626
#else
627
_extractDisplayStartAddr ()
628
#endif
629
{
630
  TuiLayoutType curLayout = currentLayout ();
631
  Opaque addr;
632
 
633
  switch (curLayout)
634
    {
635
    case SRC_COMMAND:
636
    case SRC_DATA_COMMAND:
637
      addr = (Opaque) find_line_pc (
638
                                     current_source_symtab,
639
                          srcWin->detail.sourceInfo.startLineOrAddr.lineNo);
640
      break;
641
    case DISASSEM_COMMAND:
642
    case SRC_DISASSEM_COMMAND:
643
    case DISASSEM_DATA_COMMAND:
644
      addr = disassemWin->detail.sourceInfo.startLineOrAddr.addr;
645
      break;
646
    default:
647
      addr = (Opaque) NULL;
648
      break;
649
    }
650
 
651
  return addr;
652
}                               /* _extractDisplayStartAddr */
653
 
654
 
655
static void
656
#ifdef __STDC__
657
_tuiHandleXDBLayout (
658
                      TuiLayoutDefPtr layoutDef)
659
#else
660
_tuiHandleXDBLayout (layoutDef)
661
     TuiLayoutDefPtr layoutDef;
662
#endif
663
{
664
  if (layoutDef->split)
665
    {
666
      tuiSetLayout (SRC_DISASSEM_COMMAND, TUI_UNDEFINED_REGS);
667
      tuiSetWinFocusTo (winList[layoutDef->displayMode]);
668
    }
669
  else
670
    {
671
      if (layoutDef->displayMode == SRC_WIN)
672
        tuiSetLayout (SRC_COMMAND, TUI_UNDEFINED_REGS);
673
      else
674
        tuiSetLayout (DISASSEM_DATA_COMMAND, layoutDef->regsDisplayType);
675
    }
676
 
677
 
678
  return;
679
}                               /* _tuiHandleXDBLayout */
680
 
681
 
682
static void
683
#ifdef __STDC__
684
_tuiToggleLayout_command (
685
                           char *arg,
686
                           int fromTTY)
687
#else
688
_tuiToggleLayout_command (arg, fromTTY)
689
     char *arg;
690
     int fromTTY;
691
#endif
692
{
693
  tuiDo ((TuiOpaqueFuncPtr) _tui_vToggleLayout_command, arg, fromTTY);
694
}
695
 
696
static void
697
#ifdef __STDC__
698
_tui_vToggleLayout_command (
699
                             va_list args)
700
#else
701
_tui_vToggleLayout_command (args)
702
     va_list args;
703
#endif
704
{
705
  TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
706
 
707
  if (layoutDef->displayMode == SRC_WIN)
708
    layoutDef->displayMode = DISASSEM_WIN;
709
  else
710
    layoutDef->displayMode = SRC_WIN;
711
 
712
  if (!layoutDef->split)
713
    _tuiHandleXDBLayout (layoutDef);
714
 
715
  return;
716
}                               /* _tuiToggleLayout_command */
717
 
718
 
719
static void
720
#ifdef __STDC__
721
_tuiToggleSplitLayout_command (
722
                                char *arg,
723
                                int fromTTY)
724
#else
725
_tuiToggleSplitLayout_command (arg, fromTTY)
726
     char *arg;
727
     int fromTTY;
728
#endif
729
{
730
  tuiDo ((TuiOpaqueFuncPtr) _tui_vToggleSplitLayout_command, arg, fromTTY);
731
}
732
 
733
static void
734
#ifdef __STDC__
735
_tui_vToggleSplitLayout_command (
736
                                  va_list args)
737
#else
738
_tui_vToggleSplitLayout_command (args)
739
     va_list args;
740
#endif
741
{
742
  TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
743
 
744
  layoutDef->split = (!layoutDef->split);
745
  _tuiHandleXDBLayout (layoutDef);
746
 
747
  return;
748
}                               /* _tui_vToggleSplitLayout_command */
749
 
750
 
751
static void
752
#ifdef __STDC__
753
_tuiLayout_command (
754
                     char *arg,
755
                     int fromTTY)
756
#else
757
_tuiLayout_command (arg, fromTTY)
758
     char *arg;
759
     int fromTTY;
760
#endif
761
{
762
  if ((TuiStatus) tuiDo (
763
                   (TuiOpaqueFuncPtr) tui_vSetLayoutTo, arg) != TUI_SUCCESS)
764
    warning ("Invalid layout specified.\n%s" LAYOUT_USAGE);
765
 
766
  return;
767
}                               /* _tuiLayout_command */
768
 
769
/*
770
   ** _nextLayout().
771
   **        Answer the previous layout to cycle to.
772
 */
773
static TuiLayoutType
774
#ifdef __STDC__
775
_nextLayout (void)
776
#else
777
_nextLayout ()
778
#endif
779
{
780
  TuiLayoutType newLayout;
781
 
782
  newLayout = currentLayout ();
783
  if (newLayout == UNDEFINED_LAYOUT)
784
    newLayout = SRC_COMMAND;
785
  else
786
    {
787
      newLayout++;
788
      if (newLayout == UNDEFINED_LAYOUT)
789
        newLayout = SRC_COMMAND;
790
    }
791
 
792
  return newLayout;
793
}                               /* _nextLayout */
794
 
795
 
796
/*
797
   ** _prevLayout().
798
   **        Answer the next layout to cycle to.
799
 */
800
static TuiLayoutType
801
#ifdef __STDC__
802
_prevLayout (void)
803
#else
804
_prevLayout ()
805
#endif
806
{
807
  TuiLayoutType newLayout;
808
 
809
  newLayout = currentLayout ();
810
  if (newLayout == SRC_COMMAND)
811
    newLayout = DISASSEM_DATA_COMMAND;
812
  else
813
    {
814
      newLayout--;
815
      if (newLayout == UNDEFINED_LAYOUT)
816
        newLayout = DISASSEM_DATA_COMMAND;
817
    }
818
 
819
  return newLayout;
820
}                               /* _prevLayout */
821
 
822
 
823
 
824
/*
825
   ** _makeCommandWindow().
826
 */
827
static void
828
#ifdef __STDC__
829
_makeCommandWindow (
830
                     TuiWinInfoPtr * winInfoPtr,
831
                     int height,
832
                     int originY)
833
#else
834
_makeCommandWindow (winInfoPtr, height, originY)
835
     TuiWinInfoPtr *winInfoPtr;
836
     int height;
837
     int originY;
838
#endif
839
{
840
  _initAndMakeWin ((Opaque *) winInfoPtr,
841
                   CMD_WIN,
842
                   height,
843
                   termWidth (),
844
                   0,
845
                   originY,
846
                   DONT_BOX_WINDOW);
847
 
848
  (*winInfoPtr)->canHighlight = FALSE;
849
 
850
  return;
851
}                               /* _makeCommandWindow */
852
 
853
 
854
/*
855
   ** _makeSourceWindow().
856
 */
857
static void
858
#ifdef __STDC__
859
_makeSourceWindow (
860
                    TuiWinInfoPtr * winInfoPtr,
861
                    int height,
862
                    int originY)
863
#else
864
_makeSourceWindow (winInfoPtr, height, originY)
865
     TuiWinInfoPtr *winInfoPtr;
866
     int height;
867
     int originY;
868
#endif
869
{
870
  _makeSourceOrDisassemWindow (winInfoPtr, SRC_WIN, height, originY);
871
 
872
  return;
873
}                               /* _makeSourceWindow */
874
 
875
 
876
/*
877
   ** _makeDisassemWindow().
878
 */
879
static void
880
#ifdef __STDC__
881
_makeDisassemWindow (
882
                      TuiWinInfoPtr * winInfoPtr,
883
                      int height,
884
                      int originY)
885
#else
886
_makeDisassemWindow (winInfoPtr, height, originY)
887
     TuiWinInfoPtr *winInfoPtr;
888
     int height;
889
     int originY;
890
#endif
891
{
892
  _makeSourceOrDisassemWindow (winInfoPtr, DISASSEM_WIN, height, originY);
893
 
894
  return;
895
}                               /* _makeDisassemWindow */
896
 
897
 
898
/*
899
   ** _makeDataWindow().
900
 */
901
static void
902
#ifdef __STDC__
903
_makeDataWindow (
904
                  TuiWinInfoPtr * winInfoPtr,
905
                  int height,
906
                  int originY)
907
#else
908
_makeDataWindow (winInfoPtr, height, originY)
909
     TuiWinInfoPtr *winInfoPtr;
910
     int height;
911
     int originY;
912
#endif
913
{
914
  _initAndMakeWin ((Opaque *) winInfoPtr,
915
                   DATA_WIN,
916
                   height,
917
                   termWidth (),
918
                   0,
919
                   originY,
920
                   BOX_WINDOW);
921
 
922
  return;
923
}                               /* _makeDataWindow */
924
 
925
 
926
 
927
/*
928
   **    _showSourceCommand().
929
   **        Show the Source/Command layout
930
 */
931
static void
932
#ifdef __STDC__
933
_showSourceCommand (void)
934
#else
935
_showSourceCommand ()
936
#endif
937
{
938
  _showSourceOrDisassemAndCommand (SRC_COMMAND);
939
 
940
  return;
941
}                               /* _showSourceCommand */
942
 
943
 
944
/*
945
   **    _showDisassemCommand().
946
   **        Show the Dissassem/Command layout
947
 */
948
static void
949
#ifdef __STDC__
950
_showDisassemCommand (void)
951
#else
952
_showDisassemCommand ()
953
#endif
954
{
955
  _showSourceOrDisassemAndCommand (DISASSEM_COMMAND);
956
 
957
  return;
958
}                               /* _showDisassemCommand */
959
 
960
 
961
/*
962
   **    _showSourceDisassemCommand().
963
   **        Show the Source/Disassem/Command layout
964
 */
965
static void
966
#ifdef __STDC__
967
_showSourceDisassemCommand (void)
968
#else
969
_showSourceDisassemCommand ()
970
#endif
971
{
972
  TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
973
 
974
  if (currentLayout () != SRC_DISASSEM_COMMAND)
975
    {
976
      int cmdHeight, srcHeight, asmHeight;
977
 
978
      if (m_winPtrNotNull (cmdWin))
979
        cmdHeight = cmdWin->generic.height;
980
      else
981
        cmdHeight = termHeight () / 3;
982
 
983
      srcHeight = (termHeight () - cmdHeight) / 2;
984
      asmHeight = termHeight () - (srcHeight + cmdHeight);
985
 
986
      if (m_winPtrIsNull (srcWin))
987
        _makeSourceWindow (&srcWin, srcHeight, 0);
988
      else
989
        {
990
          _initGenWinInfo (&srcWin->generic,
991
                           srcWin->generic.type,
992
                           srcHeight,
993
                           srcWin->generic.width,
994
                           srcWin->detail.sourceInfo.executionInfo->width,
995
                           0);
996
          srcWin->canHighlight = TRUE;
997
          _initGenWinInfo (srcWin->detail.sourceInfo.executionInfo,
998
                           EXEC_INFO_WIN,
999
                           srcHeight,
1000
                           3,
1001
                           0,
1002
                           0);
1003
          m_beVisible (srcWin);
1004
          m_beVisible (srcWin->detail.sourceInfo.executionInfo);
1005
          srcWin->detail.sourceInfo.hasLocator = FALSE;;
1006
        }
1007
      if (m_winPtrNotNull (srcWin))
1008
        {
1009
          TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
1010
 
1011
          tuiShowSourceContent (srcWin);
1012
          if (m_winPtrIsNull (disassemWin))
1013
            {
1014
              _makeDisassemWindow (&disassemWin, asmHeight, srcHeight - 1);
1015
              _initAndMakeWin ((Opaque *) & locator,
1016
                               LOCATOR_WIN,
1017
                               2 /* 1 */ ,
1018
                               termWidth (),
1019
                               0,
1020
                               (srcHeight + asmHeight) - 1,
1021
                               DONT_BOX_WINDOW);
1022
            }
1023
          else
1024
            {
1025
              _initGenWinInfo (locator,
1026
                               LOCATOR_WIN,
1027
                               2 /* 1 */ ,
1028
                               termWidth (),
1029
                               0,
1030
                               (srcHeight + asmHeight) - 1);
1031
              disassemWin->detail.sourceInfo.hasLocator = TRUE;
1032
              _initGenWinInfo (
1033
                                &disassemWin->generic,
1034
                                disassemWin->generic.type,
1035
                                asmHeight,
1036
                                disassemWin->generic.width,
1037
                        disassemWin->detail.sourceInfo.executionInfo->width,
1038
                                srcHeight - 1);
1039
              _initGenWinInfo (disassemWin->detail.sourceInfo.executionInfo,
1040
                               EXEC_INFO_WIN,
1041
                               asmHeight,
1042
                               3,
1043
                               0,
1044
                               srcHeight - 1);
1045
              disassemWin->canHighlight = TRUE;
1046
              m_beVisible (disassemWin);
1047
              m_beVisible (disassemWin->detail.sourceInfo.executionInfo);
1048
            }
1049
          if (m_winPtrNotNull (disassemWin))
1050
            {
1051
              srcWin->detail.sourceInfo.hasLocator = FALSE;
1052
              disassemWin->detail.sourceInfo.hasLocator = TRUE;
1053
              m_beVisible (locator);
1054
              tuiShowLocatorContent ();
1055
              tuiShowSourceContent (disassemWin);
1056
 
1057
              if (m_winPtrIsNull (cmdWin))
1058
                _makeCommandWindow (&cmdWin,
1059
                                    cmdHeight,
1060
                                    termHeight () - cmdHeight);
1061
              else
1062
                {
1063
                  _initGenWinInfo (&cmdWin->generic,
1064
                                   cmdWin->generic.type,
1065
                                   cmdWin->generic.height,
1066
                                   cmdWin->generic.width,
1067
                                   0,
1068
                                   cmdWin->generic.origin.y);
1069
                  cmdWin->canHighlight = FALSE;
1070
                  m_beVisible (cmdWin);
1071
                }
1072
              if (m_winPtrNotNull (cmdWin))
1073
                tuiRefreshWin (&cmdWin->generic);
1074
            }
1075
        }
1076
      setCurrentLayoutTo (SRC_DISASSEM_COMMAND);
1077
    }
1078
 
1079
  return;
1080
}                               /* _showSourceDisassemCommand */
1081
 
1082
 
1083
/*
1084
   **    _showData().
1085
   **        Show the Source/Data/Command or the Dissassembly/Data/Command layout
1086
 */
1087
static void
1088
#ifdef __STDC__
1089
_showData (
1090
            TuiLayoutType newLayout)
1091
#else
1092
_showData (newLayout)
1093
     TuiLayoutType newLayout;
1094
#endif
1095
{
1096
  int totalHeight = (termHeight () - cmdWin->generic.height);
1097
  int srcHeight, dataHeight;
1098
  TuiWinType winType;
1099
  TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
1100
 
1101
 
1102
  dataHeight = totalHeight / 2;
1103
  srcHeight = totalHeight - dataHeight;
1104
  m_allBeInvisible ();
1105
  m_beInvisible (locator);
1106
  _makeDataWindow (&dataWin, dataHeight, 0);
1107
  dataWin->canHighlight = TRUE;
1108
  if (newLayout == SRC_DATA_COMMAND)
1109
    winType = SRC_WIN;
1110
  else
1111
    winType = DISASSEM_WIN;
1112
  if (m_winPtrIsNull (winList[winType]))
1113
    {
1114
      if (winType == SRC_WIN)
1115
        _makeSourceWindow (&winList[winType], srcHeight, dataHeight - 1);
1116
      else
1117
        _makeDisassemWindow (&winList[winType], srcHeight, dataHeight - 1);
1118
      _initAndMakeWin ((Opaque *) & locator,
1119
                       LOCATOR_WIN,
1120
                       2 /* 1 */ ,
1121
                       termWidth (),
1122
                       0,
1123
                       totalHeight - 1,
1124
                       DONT_BOX_WINDOW);
1125
    }
1126
  else
1127
    {
1128
      _initGenWinInfo (&winList[winType]->generic,
1129
                       winList[winType]->generic.type,
1130
                       srcHeight,
1131
                       winList[winType]->generic.width,
1132
                   winList[winType]->detail.sourceInfo.executionInfo->width,
1133
                       dataHeight - 1);
1134
      _initGenWinInfo (winList[winType]->detail.sourceInfo.executionInfo,
1135
                       EXEC_INFO_WIN,
1136
                       srcHeight,
1137
                       3,
1138
                       0,
1139
                       dataHeight - 1);
1140
      m_beVisible (winList[winType]);
1141
      m_beVisible (winList[winType]->detail.sourceInfo.executionInfo);
1142
      _initGenWinInfo (locator,
1143
                       LOCATOR_WIN,
1144
                       2 /* 1 */ ,
1145
                       termWidth (),
1146
                       0,
1147
                       totalHeight - 1);
1148
    }
1149
  winList[winType]->detail.sourceInfo.hasLocator = TRUE;
1150
  m_beVisible (locator);
1151
  tuiShowLocatorContent ();
1152
  addToSourceWindows (winList[winType]);
1153
  setCurrentLayoutTo (newLayout);
1154
 
1155
  return;
1156
}                               /* _showData */
1157
 
1158
/*
1159
   ** _initGenWinInfo().
1160
 */
1161
static void
1162
#ifdef __STDC__
1163
_initGenWinInfo (
1164
                  TuiGenWinInfoPtr winInfo,
1165
                  TuiWinType type,
1166
                  int height,
1167
                  int width,
1168
                  int originX,
1169
                  int originY)
1170
#else
1171
_initGenWinInfo (winInfo, type, height, width, originX, originY)
1172
     TuiGenWinInfoPtr winInfo;
1173
     TuiWinType type;
1174
     int height;
1175
     int width;
1176
     int originX;
1177
     int originY;
1178
#endif
1179
{
1180
  int h = height;
1181
 
1182
  winInfo->type = type;
1183
  winInfo->width = width;
1184
  winInfo->height = h;
1185
  if (h > 1)
1186
    {
1187
      winInfo->viewportHeight = h - 1;
1188
      if (winInfo->type != CMD_WIN)
1189
        winInfo->viewportHeight--;
1190
    }
1191
  else
1192
    winInfo->viewportHeight = 1;
1193
  winInfo->origin.x = originX;
1194
  winInfo->origin.y = originY;
1195
 
1196
  return;
1197
}                               /* _initGenWinInfo */
1198
 
1199
/*
1200
   ** _initAndMakeWin().
1201
 */
1202
static void
1203
#ifdef __STDC__
1204
_initAndMakeWin (
1205
                  Opaque * winInfoPtr,
1206
                  TuiWinType winType,
1207
                  int height,
1208
                  int width,
1209
                  int originX,
1210
                  int originY,
1211
                  int boxIt)
1212
#else
1213
_initAndMakeWin (winInfoPtr, winType, height, width, originX, originY, boxIt)
1214
     Opaque *winInfoPtr;
1215
     TuiWinType winType;
1216
     int height;
1217
     int width;
1218
     int originX;
1219
     int originY;
1220
     int boxIt;
1221
#endif
1222
{
1223
  Opaque opaqueWinInfo = *winInfoPtr;
1224
  TuiGenWinInfoPtr generic;
1225
 
1226
  if (opaqueWinInfo == (Opaque) NULL)
1227
    {
1228
      if (m_winIsAuxillary (winType))
1229
        opaqueWinInfo = (Opaque) allocGenericWinInfo ();
1230
      else
1231
        opaqueWinInfo = (Opaque) allocWinInfo (winType);
1232
    }
1233
  if (m_winIsAuxillary (winType))
1234
    generic = (TuiGenWinInfoPtr) opaqueWinInfo;
1235
  else
1236
    generic = &((TuiWinInfoPtr) opaqueWinInfo)->generic;
1237
 
1238
  if (opaqueWinInfo != (Opaque) NULL)
1239
    {
1240
      _initGenWinInfo (generic, winType, height, width, originX, originY);
1241
      if (!m_winIsAuxillary (winType))
1242
        {
1243
          if (generic->type == CMD_WIN)
1244
            ((TuiWinInfoPtr) opaqueWinInfo)->canHighlight = FALSE;
1245
          else
1246
            ((TuiWinInfoPtr) opaqueWinInfo)->canHighlight = TRUE;
1247
        }
1248
      makeWindow (generic, boxIt);
1249
      if (winType == LOCATOR_WIN)
1250
        tuiClearLocatorDisplay ();
1251
      echo ();
1252
    }
1253
  *winInfoPtr = opaqueWinInfo;
1254
 
1255
  return;
1256
}                               /* _initAndMakeWin */
1257
 
1258
 
1259
/*
1260
   ** _makeSourceOrDisassemWindow().
1261
 */
1262
static void
1263
#ifdef __STDC__
1264
_makeSourceOrDisassemWindow (
1265
                              TuiWinInfoPtr * winInfoPtr,
1266
                              TuiWinType type,
1267
                              int height,
1268
                              int originY)
1269
#else
1270
_makeSourceOrDisassemWindow (winInfoPtr, type, height, originY)
1271
     TuiWinInfoPtr *winInfoPtr;
1272
     TuiWinType type;
1273
     int height;
1274
     int originY;
1275
#endif
1276
{
1277
  TuiGenWinInfoPtr executionInfo = (TuiGenWinInfoPtr) NULL;
1278
 
1279
  /*
1280
     ** Create the exeuction info window.
1281
   */
1282
  if (type == SRC_WIN)
1283
    executionInfo = sourceExecInfoWinPtr ();
1284
  else
1285
    executionInfo = disassemExecInfoWinPtr ();
1286
  _initAndMakeWin ((Opaque *) & executionInfo,
1287
                   EXEC_INFO_WIN,
1288
                   height,
1289
                   3,
1290
                   0,
1291
                   originY,
1292
                   DONT_BOX_WINDOW);
1293
  /*
1294
     ** Now create the source window.
1295
   */
1296
  _initAndMakeWin ((Opaque *) winInfoPtr,
1297
                   type,
1298
                   height,
1299
                   termWidth () - executionInfo->width,
1300
                   executionInfo->width,
1301
                   originY,
1302
                   BOX_WINDOW);
1303
 
1304
  (*winInfoPtr)->detail.sourceInfo.executionInfo = executionInfo;
1305
 
1306
  return;
1307
}                               /* _makeSourceOrDisassemWindow */
1308
 
1309
 
1310
/*
1311
   **    _showSourceOrDisassemAndCommand().
1312
   **        Show the Source/Command or the Disassem layout
1313
 */
1314
static void
1315
#ifdef __STDC__
1316
_showSourceOrDisassemAndCommand (
1317
                                  TuiLayoutType layoutType)
1318
#else
1319
_showSourceOrDisassemAndCommand (layoutType)
1320
     TuiLayoutType layoutType;
1321
#endif
1322
{
1323
  if (currentLayout () != layoutType)
1324
    {
1325
      TuiWinInfoPtr *winInfoPtr;
1326
      int areaLeft;
1327
      int srcHeight, cmdHeight;
1328
      TuiGenWinInfoPtr locator = locatorWinInfoPtr ();
1329
 
1330
      if (m_winPtrNotNull (cmdWin))
1331
        cmdHeight = cmdWin->generic.height;
1332
      else
1333
        cmdHeight = termHeight () / 3;
1334
      srcHeight = termHeight () - cmdHeight;
1335
 
1336
 
1337
      if (layoutType == SRC_COMMAND)
1338
        winInfoPtr = &srcWin;
1339
      else
1340
        winInfoPtr = &disassemWin;
1341
 
1342
      if (m_winPtrIsNull (*winInfoPtr))
1343
        {
1344
          if (layoutType == SRC_COMMAND)
1345
            _makeSourceWindow (winInfoPtr, srcHeight - 1, 0);
1346
          else
1347
            _makeDisassemWindow (winInfoPtr, srcHeight - 1, 0);
1348
          _initAndMakeWin ((Opaque *) & locator,
1349
                           LOCATOR_WIN,
1350
                           2 /* 1 */ ,
1351
                           termWidth (),
1352
                           0,
1353
                           srcHeight - 1,
1354
                           DONT_BOX_WINDOW);
1355
        }
1356
      else
1357
        {
1358
          _initGenWinInfo (locator,
1359
                           LOCATOR_WIN,
1360
                           2 /* 1 */ ,
1361
                           termWidth (),
1362
                           0,
1363
                           srcHeight - 1);
1364
          (*winInfoPtr)->detail.sourceInfo.hasLocator = TRUE;
1365
          _initGenWinInfo (
1366
                            &(*winInfoPtr)->generic,
1367
                            (*winInfoPtr)->generic.type,
1368
                            srcHeight - 1,
1369
                            (*winInfoPtr)->generic.width,
1370
                      (*winInfoPtr)->detail.sourceInfo.executionInfo->width,
1371
                            0);
1372
          _initGenWinInfo ((*winInfoPtr)->detail.sourceInfo.executionInfo,
1373
                           EXEC_INFO_WIN,
1374
                           srcHeight - 1,
1375
                           3,
1376
                           0,
1377
                           0);
1378
          (*winInfoPtr)->canHighlight = TRUE;
1379
          m_beVisible (*winInfoPtr);
1380
          m_beVisible ((*winInfoPtr)->detail.sourceInfo.executionInfo);
1381
        }
1382
      if (m_winPtrNotNull (*winInfoPtr))
1383
        {
1384
          (*winInfoPtr)->detail.sourceInfo.hasLocator = TRUE;
1385
          m_beVisible (locator);
1386
          tuiShowLocatorContent ();
1387
          tuiShowSourceContent (*winInfoPtr);
1388
 
1389
          if (m_winPtrIsNull (cmdWin))
1390
            {
1391
              _makeCommandWindow (&cmdWin, cmdHeight, srcHeight);
1392
              tuiRefreshWin (&cmdWin->generic);
1393
            }
1394
          else
1395
            {
1396
              _initGenWinInfo (&cmdWin->generic,
1397
                               cmdWin->generic.type,
1398
                               cmdWin->generic.height,
1399
                               cmdWin->generic.width,
1400
                               cmdWin->generic.origin.x,
1401
                               cmdWin->generic.origin.y);
1402
              cmdWin->canHighlight = FALSE;
1403
              m_beVisible (cmdWin);
1404
            }
1405
        }
1406
      setCurrentLayoutTo (layoutType);
1407
    }
1408
 
1409
  return;
1410
}                               /* _showSourceOrDisassemAndCommand */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.