This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Remove fields curch and cur_line from TUI_CMD_WIN
- From: Patrick Palka <patrick at parcs dot ath dot cx>
- To: Pedro Alves <palves at redhat dot com>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Date: Thu, 20 Aug 2015 23:13:43 -0400
- Subject: Re: [PATCH] Remove fields curch and cur_line from TUI_CMD_WIN
- Authentication-results: sourceware.org; auth=none
- References: <1439959138-9326-1-git-send-email-patrick at parcs dot ath dot cx> <55D6125C dot 7080408 at redhat dot com>
On Thu, Aug 20, 2015 at 1:46 PM, Pedro Alves <palves@redhat.com> wrote:
> On 08/19/2015 05:38 AM, Patrick Palka wrote:
>> These fields are currently used to track the location of the cursor
>> inside the command window. But their usefulness is questionable because
>> ncurses already internally keeps track of the location of the cursor,
>> whose coordinates we can query using the functions getyx(), getcurx() or
>> getcury(). It is an unnecessary pain to keep these fields in sync with
>> ncurses, and their meaning is not well-defined anyway. For instance, it
>> is not clear whether the coordinates held in these fields are
>> authoritative, or whether the coordinates reported by ncurses are.
>>
>> So to keep things simple, this patch removes these fields and replaces
>> existing reads of these fields with calls to the appropriate ncurses
>> querying functions, and writes to these fields with calls to wmove()
>> (when necessary and applicable).
>>
>> In the function tui_cont_sig(), I removed the call to wmove() entirely
>> because moving to (start_line, curch) makes no sense. The move should
>> have been to (cur_line, curch) -- which would now be a no-op.
>>
>> Does this seem like a step in the right direction? These fields like an
>> unnecessary abstraction.
>>
>
> Sounds like a good idea to me.
>
>> Tested on x86_64 Fedora 22, with seemingly no obvious regressions.
>>
>> gdb/ChangeLog:
>>
>> * tui/tui-data.h (tui_command_info): Remove fields cur_line and
>> curch.
>> * tui/tui-data.c (tui_clear_win_detail) [CMD_WIN]: Don't set
>> cur_line or curch, instead call wmove().
>> (init_win_info) [CMD_WIN]: Likewise.
>> * tui/tui-io.c (tui_puts): Likewise. Don't read cur_line,
>> instead call getcury().
>> (tui_redisplay_readline): Don't set cur_line or curch.
>> (tui_mld_erase_entire_line): Don't read cur_line, instead call
>> getcury().
>> (tui_cont_sig): Remove call to wmove.
>> (tui_getc): Don't read cur_line or curch, instead call getcury()
>> or getyx(). Don't set curch.
>> * tui/tui-win.c (make_visible_with_new_height) [CMD_WIN]: Don't
>> set cur_line or curch. Always move cursor to (0,0).
>
> OK.
Thanks for reviewing! Committed.
>
> Thanks,
> Pedro Alves
>