* fhandler.h (fhandler_console::dwBufferSize): Delete.
(fhandler_console::dwCursorPosition): Ditto. (fhandler_console::wAttributes): Ditto. (fhandler_console::b): New field encompassing previously disparate screen buffer info. (fhandler_console::save_bufsize): Rename from savebufsiz (fhandler_console::save_buf): Rename sfrom savebuf. (fhandler_console::save_cursor): New field. (fhandler_console::save_restore): New function. (fhandler_console::con): Rename from dev_state. (fhandler_console::focus_aware): Accommodate name change. * fhandler_console.cc: Use 'b' field of dev_console throughout instead of disparate names. Accommodate dev_state -> con rename. (dev_state:save_restore): New function. Attempt to save the entire screen buffer rather than just the visible part. Clear the buffer when saving, like Linux. (fhandler_console::char_command): Use con.save_restore() for Save/restore screen sequence.
This commit is contained in:
parent
bc7c78b225
commit
dc5694dc88
|
@ -1,3 +1,24 @@
|
||||||
|
2014-03-09 Christopher Faylor <me.cygwin2014@cgf.cx>
|
||||||
|
|
||||||
|
* fhandler.h (fhandler_console::dwBufferSize): Delete.
|
||||||
|
(fhandler_console::dwCursorPosition): Ditto.
|
||||||
|
(fhandler_console::wAttributes): Ditto.
|
||||||
|
(fhandler_console::b): New field encompassing previously disparate
|
||||||
|
screen buffer info.
|
||||||
|
(fhandler_console::save_bufsize): Rename from savebufsiz
|
||||||
|
(fhandler_console::save_buf): Rename sfrom savebuf.
|
||||||
|
(fhandler_console::save_cursor): New field.
|
||||||
|
(fhandler_console::save_restore): New function.
|
||||||
|
(fhandler_console::con): Rename from dev_state.
|
||||||
|
(fhandler_console::focus_aware): Accommodate name change.
|
||||||
|
* fhandler_console.cc: Use 'b' field of dev_console throughout instead
|
||||||
|
of disparate names. Accommodate dev_state -> con rename.
|
||||||
|
(dev_state:save_restore): New function. Attempt to save the entire
|
||||||
|
screen buffer rather than just the visible part. Clear the buffer when
|
||||||
|
saving, like Linux.
|
||||||
|
(fhandler_console::char_command): Use con.save_restore() for
|
||||||
|
Save/restore screen sequence.
|
||||||
|
|
||||||
2014-03-09 Christopher Faylor <me.cygwin2014@cgf.cx>
|
2014-03-09 Christopher Faylor <me.cygwin2014@cgf.cx>
|
||||||
|
|
||||||
* sigproc.cc (_cygtls::remove_wq): Reset thread_ev inside of lock. Set
|
* sigproc.cc (_cygtls::remove_wq): Reset thread_ev inside of lock. Set
|
||||||
|
|
|
@ -1287,23 +1287,22 @@ class dev_console
|
||||||
/* saved cursor coordinates */
|
/* saved cursor coordinates */
|
||||||
int savex, savey;
|
int savex, savey;
|
||||||
|
|
||||||
/* saved screen */
|
|
||||||
COORD savebufsiz;
|
|
||||||
PCHAR_INFO savebuf;
|
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
short Top, Bottom;
|
short Top;
|
||||||
|
short Bottom;
|
||||||
} scroll_region;
|
} scroll_region;
|
||||||
|
|
||||||
SHORT winTop;
|
CONSOLE_SCREEN_BUFFER_INFOEX b;
|
||||||
SHORT winBottom;
|
|
||||||
COORD dwWinSize;
|
COORD dwWinSize;
|
||||||
COORD dwBufferSize;
|
|
||||||
COORD dwCursorPosition;
|
|
||||||
WORD wAttributes;
|
|
||||||
COORD dwEnd;
|
COORD dwEnd;
|
||||||
|
|
||||||
|
/* saved screen */
|
||||||
|
COORD save_bufsize;
|
||||||
|
PCHAR_INFO save_buf;
|
||||||
|
COORD save_cursor;
|
||||||
|
|
||||||
COORD dwLastCursorPosition;
|
COORD dwLastCursorPosition;
|
||||||
COORD dwMousePosition; /* scroll-adjusted coord of mouse event */
|
COORD dwMousePosition; /* scroll-adjusted coord of mouse event */
|
||||||
COORD dwLastMousePosition; /* scroll-adjusted coord of previous mouse event */
|
COORD dwLastMousePosition; /* scroll-adjusted coord of previous mouse event */
|
||||||
|
@ -1330,6 +1329,7 @@ class dev_console
|
||||||
bool __reg3 scroll_window (HANDLE, int, int, int, int);
|
bool __reg3 scroll_window (HANDLE, int, int, int, int);
|
||||||
void __reg3 scroll_buffer (HANDLE, int, int, int, int, int, int);
|
void __reg3 scroll_buffer (HANDLE, int, int, int, int, int, int);
|
||||||
void __reg3 clear_screen (HANDLE, int, int, int, int);
|
void __reg3 clear_screen (HANDLE, int, int, int, int);
|
||||||
|
void __reg3 save_restore (HANDLE, char);
|
||||||
|
|
||||||
friend class fhandler_console;
|
friend class fhandler_console;
|
||||||
};
|
};
|
||||||
|
@ -1341,7 +1341,7 @@ public:
|
||||||
struct console_state
|
struct console_state
|
||||||
{
|
{
|
||||||
tty_min tty_min_state;
|
tty_min tty_min_state;
|
||||||
dev_console dev_state;
|
dev_console con;
|
||||||
};
|
};
|
||||||
private:
|
private:
|
||||||
static const unsigned MAX_WRITE_CHARS;
|
static const unsigned MAX_WRITE_CHARS;
|
||||||
|
@ -1413,7 +1413,7 @@ private:
|
||||||
int ioctl (unsigned int cmd, void *);
|
int ioctl (unsigned int cmd, void *);
|
||||||
int init (HANDLE, DWORD, mode_t);
|
int init (HANDLE, DWORD, mode_t);
|
||||||
bool mouse_aware (MOUSE_EVENT_RECORD& mouse_event);
|
bool mouse_aware (MOUSE_EVENT_RECORD& mouse_event);
|
||||||
bool focus_aware () {return shared_console_info->dev_state.use_focus;}
|
bool focus_aware () {return shared_console_info->con.use_focus;}
|
||||||
|
|
||||||
select_record *select_read (select_stuff *);
|
select_record *select_read (select_stuff *);
|
||||||
select_record *select_write (select_stuff *);
|
select_record *select_write (select_stuff *);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue