Make setting TUI border attributes take effect immediately
authorEli Zaretskii <eliz@gnu.org>
Fri, 16 Jan 2015 16:24:16 +0000 (18:24 +0200)
committerEli Zaretskii <eliz@gnu.org>
Fri, 16 Jan 2015 16:24:16 +0000 (18:24 +0200)
gdb/
2015-01-16  Eli Zaretskii  <eliz@gnu.org>

     * tui/tui-win.c (tui_rehighlight_all, tui_set_var_cmd): New
     functions.
     (_initialize_tui_win) <border-kind, border-mode>:
     <active-border-mode>: Use tui_set_var_cmd as the "set" function.
     * tui/tui-win.h: Add prototype for tui_rehighlight_all.

gdb/ChangeLog
gdb/tui/tui-win.c
gdb/tui/tui-win.h

index 661f9b63e3b29c83ce89a3b7f2d1119e4e6668a0..e45f5c1bc7d0a1dde5031ba68efd4fb0fbb914e7 100644 (file)
@@ -1,5 +1,11 @@
 2015-01-16  Eli Zaretskii  <eliz@gnu.org>
 
+       * tui/tui-win.c (tui_rehighlight_all, tui_set_var_cmd): New
+       functions.
+       (_initialize_tui_win) <border-kind, border-mode>:
+       <active-border-mode>: Use tui_set_var_cmd as the "set" function.
+       * tui/tui-win.h: Add prototype for tui_rehighlight_all.
+
        * tui/tui-win.c (tui_scroll_left_command, tui_scroll_right_command):
        Doc fix.
        (tui_set_tab_width_command): Delete and recreate the source and
index 96fa8012c82bd43b231cb17803706348ddbafebd..7e9bd1e87904073e0d5895a1e0209a222fb63520 100644 (file)
@@ -344,6 +344,15 @@ tui_get_cmd_list (void)
   return &tuilist;
 }
 
+/* The set_func hook of "set tui ..." commands that affect the window
+   borders on the TUI display.  */
+void
+tui_set_var_cmd (char *null_args, int from_tty, struct cmd_list_element *c)
+{
+  if (tui_update_variables () && tui_active)
+    tui_rehighlight_all ();
+}
+
 /* Function to initialize gdb commands, for tui window
    manipulation.  */
 
@@ -420,7 +429,7 @@ This variable controls the border of TUI windows:\n\
 space           use a white space\n\
 ascii           use ascii characters + - | for the border\n\
 acs             use the Alternate Character Set"),
-                       NULL,
+                       tui_set_var_cmd,
                        show_tui_border_kind,
                        &tui_setlist, &tui_showlist);
 
@@ -436,7 +445,7 @@ half            use half bright\n\
 half-standout   use half bright and standout mode\n\
 bold            use extra bright or bold\n\
 bold-standout   use extra bright or bold with standout mode"),
-                       NULL,
+                       tui_set_var_cmd,
                        show_tui_border_mode,
                        &tui_setlist, &tui_showlist);
 
@@ -452,7 +461,7 @@ half            use half bright\n\
 half-standout   use half bright and standout mode\n\
 bold            use extra bright or bold\n\
 bold-standout   use extra bright or bold with standout mode"),
-                       NULL,
+                       tui_set_var_cmd,
                        show_tui_active_border_mode,
                        &tui_setlist, &tui_showlist);
 }
@@ -646,6 +655,14 @@ tui_refresh_all_win (void)
   tui_show_locator_content ();
 }
 
+void
+tui_rehighlight_all (void)
+{
+  enum tui_win_type type;
+
+  for (type = SRC_WIN; type < MAX_MAJOR_WINDOWS; type++)
+    tui_check_and_display_highlight_if_needed (tui_win_list[type]);
+}
 
 /* Resize all the windows based on the terminal size.  This function
    gets called from within the readline sinwinch handler.  */
index 6601d4b88e30bfde7c5beab62515fc5dd94a3b27..7d77a0040add7038f2d958a608f7cb1efa6ff333 100644 (file)
@@ -55,4 +55,7 @@ extern void tui_update_gdb_sizes (void);
 /* Create or get the TUI command list.  */
 struct cmd_list_element **tui_get_cmd_list (void);
 
+/* Set a TUI variable.  */
+void tui_set_var_cmd (char *, int, struct cmd_list_element *);
+
 #endif