* stabsread.c (get_substring): Declare second arg as int.
[deliverable/binutils-gdb.git] / gdb / gdbtk.tcl
index 8546352f8a08c711f12ce9289872b8867cfe8714..bd08669e734b723e35b16ebcc8415804c224e0df 100644 (file)
@@ -27,7 +27,6 @@ set cfunc NIL
 set line_numbers 1
 set breakpoint_file(-1) {[garbage]}
 set disassemble_with_source nosource
-set expr_update_list(0) 0
 set gdb_prompt "(gdb) "
 
 # Hint: The following can be toggled from a tclsh window after
@@ -1089,9 +1088,6 @@ proc not_implemented_yet {message} {
 #      Create the expression display window.
 #
 
-set expr_num 0
-set delete_expr_num 0
-
 # Set delete_expr_num, and set -state of Delete button.
 proc expr_update_button {num} {
   global delete_expr_num
@@ -1135,13 +1131,14 @@ proc add_expr {expr} {
 
 proc delete_expr {} {
   global delete_expr_num
+  global expr_update_list
+
   if {$delete_expr_num > 0} then {
     set e .expr.exprs
     set f e${delete_expr_num}
 
     destroy $e.updates.$f $e.expressions.$f $e.values.$f
-
-    # FIXME should we unset an element of expr_update_list here?
+    unset expr_update_list($delete_expr_num)
   }
 }
 
@@ -1171,9 +1168,21 @@ proc update_exprs {} {
 }
 
 proc create_expr_window {} {
+       global expr_num
+       global delete_expr_num
+       global expr_update_list
 
        if {[winfo exists .expr]} {raise .expr ; return}
 
+       # All the state about individual expressions is stored in the
+       # expression window widgets, so when it is deleted, the
+       # previous values of the expression global variables become
+       # invalid.  Reset to a known initial state.
+       set expr_num 0
+       set delete_expr_num 0
+       catch {unset expr_update_list}
+       set expr_update_list(0) 0
+
        toplevel .expr
        wm title .expr "GDB Expressions"
        wm iconname .expr "Expressions"
@@ -1766,6 +1775,13 @@ proc reg_config_menu {} {
 #
 
 proc create_registers_window {} {
+    global reg_format_natural
+    global reg_format_decimal
+    global reg_format_hex
+    global reg_format_octal
+    global reg_format_raw
+    global reg_format_binary
+    global reg_format_unsigned
 
     # If we already have a register window, just use that one.
 
@@ -1782,37 +1798,37 @@ proc create_registers_window {} {
     .reg.menubar.view.menu delete 0 last
 
     # Natural menu item
-    .reg.menubar.view.menu add checkbutton -label reg_format_natural(label) \
+    .reg.menubar.view.menu add checkbutton -label $reg_format_natural(label) \
            -variable reg_format_natural(enable) -onvalue on -offvalue off \
            -command {update_registers redraw}
 
     # Decimal menu item
-    .reg.menubar.view.menu add checkbutton -label reg_format_decimal(label) \
+    .reg.menubar.view.menu add checkbutton -label $reg_format_decimal(label) \
            -variable reg_format_decimal(enable) -onvalue on -offvalue off \
            -command {update_registers redraw}
 
     # Hex menu item
-    .reg.menubar.view.menu add checkbutton -label reg_format_hex(label) \
+    .reg.menubar.view.menu add checkbutton -label $reg_format_hex(label) \
            -variable reg_format_hex(enable) -onvalue on -offvalue off \
            -command {update_registers redraw}
 
     # Octal menu item
-    .reg.menubar.view.menu add checkbutton -label reg_format_octal(label) \
+    .reg.menubar.view.menu add checkbutton -label $reg_format_octal(label) \
            -variable reg_format_octal(enable) -onvalue on -offvalue off \
            -command {update_registers redraw}
 
     # Binary menu item
-    .reg.menubar.view.menu add checkbutton -label reg_format_binary(label) \
+    .reg.menubar.view.menu add checkbutton -label $reg_format_binary(label) \
            -variable reg_format_binary(enable) -onvalue on -offvalue off \
            -command {update_registers redraw}
 
     # Unsigned menu item
-    .reg.menubar.view.menu add checkbutton -label reg_format_unsigned(label) \
+    .reg.menubar.view.menu add checkbutton -label $reg_format_unsigned(label) \
            -variable reg_format_unsigned(enable) -onvalue on -offvalue off \
            -command {update_registers redraw}
 
     # Raw menu item
-    .reg.menubar.view.menu add checkbutton -label reg_format_raw(label) \
+    .reg.menubar.view.menu add checkbutton -label $reg_format_raw(label) \
            -variable reg_format_raw(enable) -onvalue on -offvalue off \
            -command {update_registers redraw}
 
@@ -1970,7 +1986,7 @@ proc populate_reg_window {} {
 
     set width [expr $max_regname_width + 15]
 
-    set height [llength $regnames]
+    set height [expr [llength $regnames] + 1]
 
     if {$height > 60} {set height 60}
 
@@ -2225,12 +2241,17 @@ proc files_command {} {
   pack .files_window.close -side bottom -fill x -expand no -anchor s
   pack .files_window.scroll -side right -fill both
   pack .files_window.list -side left -fill both -expand yes
-  bind .files_window.list <Any-ButtonRelease-1> {
+  bind .files_window.list <ButtonRelease-1> {
     set file [%W get [%W curselection]]
     gdb_cmd "list $file:1,0"
     update_listing [gdb_loc $file:1]
     destroy .files_window
   }
+  # We must execute the listbox binding first, because it
+  # references the widget that will be destroyed by the widget
+  # binding for Button-Release-1.  Otherwise we try to use
+  # .files_window.list after the .files_window is destroyed.
+  bind_widget_after_class .files_window.list
 }
 
 button .files -text Files -command files_command
This page took 0.02562 seconds and 4 git commands to generate.