Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: tromey@adacore.com
Cc: gdb-patches@sourceware.org
Subject: Re: [RFC 8.3 0/3] Some style fixes
Date: Wed, 13 Mar 2019 15:50:00 -0000	[thread overview]
Message-ID: <83k1h23hat.fsf@gnu.org> (raw)
In-Reply-To: <8336ns3uv4.fsf@gnu.org> (message from Eli Zaretskii on Tue, 12	Mar 2019 18:44:47 +0200)

For the MinGW-specific problem with TUI colors, described here:

  https://www.sourceware.org/ml/gdb-patches/2019-03/msg00000.html
  https://www.sourceware.org/ml/gdb-patches/2019-03/msg00034.html

I propose to fix that as in the patch below.  Any objections to my
pushing this to the master and th gdb-8.3 branch (with suitable
ChangeLog entries)?

--- gdb/tui/tui-io.c~5	2019-03-12 09:18:11.713960000 +0200
+++ gdb/tui/tui-io.c	2019-03-13 09:09:15.185827600 +0200
@@ -37,6 +37,10 @@
 #include "cli-out.h"
 #include <fcntl.h>
 #include <signal.h>
+#ifdef __MINGW32__
+#include <windows.h>
+static SHORT ncurses_norm_attr;
+#endif
 #include "common/filestuff.h"
 #include "completer.h"
 #include "gdb_curses.h"
@@ -322,6 +326,16 @@ apply_ansi_escape (WINDOW *w, const char
       int fgi, bgi;
       if (get_color (fg, &fgi) && get_color (bg, &bgi))
 	{
+#ifdef __MINGW32__
+	  /* MS-Windows port of ncurses doesn't support implicit
+	     default foreground and background colors, so we must
+	     specify them explicitly when needed, using the colors we
+	     saw at startup.  */
+	  if (fgi == -1)
+	    fgi = ncurses_norm_attr & 15;
+	  if (bgi == -1)
+	    bgi = (ncurses_norm_attr >> 4) & 15;
+#endif
 	  int pair = get_color_pair (fgi, bgi);
 	  if (last_color_pair != -1)
 	    wattroff (w, COLOR_PAIR (last_color_pair));
@@ -803,6 +817,19 @@ tui_initialize_io (void)
 #else
   tui_rl_outstream = stdout;
 #endif
+
+#ifdef __MINGW32__
+  /* MS-Windows port of ncurses doesn't support default foreground and
+     background colors, so we must record the default colors at startup.  */
+  HANDLE hstdout = (HANDLE)_get_osfhandle (fileno (stdout));
+  DWORD cmode;
+  CONSOLE_SCREEN_BUFFER_INFO csbi;
+
+  if (hstdout != INVALID_HANDLE_VALUE
+      && GetConsoleMode (hstdout, &cmode) != 0
+      && GetConsoleScreenBufferInfo (hstdout, &csbi))
+    ncurses_norm_attr = csbi.wAttributes;
+#endif
 }
 
 /* Get a character from the command window.  This is called from the


  reply	other threads:[~2019-03-13 15:50 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-08 21:04 Tom Tromey
2019-03-08 21:04 ` [RFC 8.3 3/3] Avoid a crash in source_cache::extract_lines Tom Tromey
2019-03-13 17:07   ` Pedro Alves
2019-03-13 17:20     ` Tom Tromey
2019-03-13 18:06       ` Pedro Alves
2019-03-14 11:37         ` Tom Tromey
2019-03-08 21:04 ` [RFC 8.3 2/3] Add the "set style source" command Tom Tromey
2019-03-09  6:17   ` Eli Zaretskii
2019-03-11 20:13     ` Tom Tromey
2019-03-09 11:18   ` Philippe Waroquiers
2019-03-11 20:13     ` Tom Tromey
2019-03-11 20:25       ` Eli Zaretskii
2019-03-08 21:04 ` [RFC 8.3 1/3] Make TUI react to "set style enabled" Tom Tromey
2019-03-13 19:28   ` Pedro Alves
2019-03-14 11:43     ` Tom Tromey
2019-03-09  6:17 ` [RFC 8.3 0/3] Some style fixes Eli Zaretskii
2019-03-10 13:14   ` Eli Zaretskii
2019-03-11 20:15     ` Tom Tromey
2019-03-12 16:44       ` Eli Zaretskii
2019-03-13 15:50         ` Eli Zaretskii [this message]
2019-03-14 12:21           ` Tom Tromey
2019-03-14 14:40             ` Pedro Alves
2019-03-14 15:36               ` Eli Zaretskii
2019-03-15 12:34         ` Fix pressing down in the TUI (Re: [RFC 8.3 0/3] Some style fixes) Pedro Alves
2019-03-15 13:37           ` Eli Zaretskii
2019-03-15 13:56             ` Pedro Alves
2019-03-16 17:59               ` Eli Zaretskii
2019-03-24 15:35                 ` Simon Marchi
2019-03-25  1:36                   ` Simon Marchi
2019-03-25 15:14                     ` Tom Tromey
2019-03-26  0:52                       ` Simon Marchi
2019-03-15 15:33           ` Tom Tromey
2019-03-15 12:43         ` Avoid overwriting the TUI source window frame " Pedro Alves
2019-03-16 12:17           ` Eli Zaretskii
2019-03-15 14:15         ` [PATCH v2] Fix first time you type UP or DOWN in TUI's command window " Pedro Alves
2019-03-15 15:38           ` Eli Zaretskii
2019-03-18 20:24             ` Pedro Alves
2019-03-19  6:09               ` Eli Zaretskii
2019-03-19 18:14                 ` Pedro Alves
2019-03-09 14:28 ` [RFC 8.3 0/3] Some style fixes Hannes Domani via gdb-patches
2019-03-12 16:48   ` Tom Tromey
2019-03-12 17:09     ` Hannes Domani via gdb-patches
2019-03-13 15:44       ` Eli Zaretskii
2019-03-14 20:25         ` "next" into line longer than the source window-width (Re: [RFC 8.3 0/3] Some style fixes) Pedro Alves
2019-03-17 16:05           ` Eli Zaretskii
2019-03-14 20:58         ` [PATCH] Fix scrolling right in the TUI " Pedro Alves
2019-03-15 12:34           ` Hannes Domani via gdb-patches
2019-03-15 21:51           ` Tom Tromey
2019-03-18 14:41             ` Pedro Alves
2019-03-17 16:06           ` Eli Zaretskii
2019-03-12 17:29     ` [RFC 8.3 0/3] Some style fixes Eli Zaretskii
2019-03-12 17:29     ` Eli Zaretskii
2019-03-12 17:32       ` Eli Zaretskii
2019-03-26 20:52     ` Pedro Franco de Carvalho
2019-03-14 11:44 ` Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83k1h23hat.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --cc=tromey@adacore.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox