/* Terminal hooks for GNU Emacs on the Microsoft Windows API.
- Copyright (C) 1992, 1999, 2001-2013 Free Software Foundation, Inc.
+ Copyright (C) 1992, 1999, 2001-2015 Free Software Foundation, Inc.
This file is part of GNU Emacs.
#include "termhooks.h"
#include "termchar.h"
#include "dispextern.h"
+#include "menu.h" /* for tty_menu_show */
#include "w32term.h"
-#include "w32common.h" /* for os_subtype */
+#include "w32common.h" /* for os_subtype */
#include "w32inevt.h"
/* from window.c */
static WORD char_attr_normal;
static DWORD prev_console_mode;
+static CONSOLE_CURSOR_INFO console_cursor_info;
#ifndef USE_SEPARATE_SCREEN
static CONSOLE_CURSOR_INFO prev_console_cursor;
#endif
SetConsoleCursorPosition (cur_screen, cursor_coords);
}
+void
+w32con_hide_cursor (void)
+{
+ GetConsoleCursorInfo (cur_screen, &console_cursor_info);
+ console_cursor_info.bVisible = FALSE;
+ SetConsoleCursorInfo (cur_screen, &console_cursor_info);
+}
+
+void
+w32con_show_cursor (void)
+{
+ GetConsoleCursorInfo (cur_screen, &console_cursor_info);
+ console_cursor_info.bVisible = TRUE;
+ SetConsoleCursorInfo (cur_screen, &console_cursor_info);
+}
+
/* Clear from cursor to end of screen. */
static void
w32con_clear_to_end (struct frame *f)
{
w32con_clear_end_of_line (f, FRAME_COLS (f) - 1);
- w32con_ins_del_lines (f, cursor_coords.Y, FRAME_LINES (f) - cursor_coords.Y - 1);
+ w32con_ins_del_lines (f, cursor_coords.Y, FRAME_TOTAL_LINES (f) - cursor_coords.Y - 1);
}
/* Clear the frame. */
GetConsoleScreenBufferInfo (GetStdHandle (STD_OUTPUT_HANDLE), &info);
/* Remember that the screen buffer might be wider than the window. */
- n = FRAME_LINES (f) * info.dwSize.X;
+ n = FRAME_TOTAL_LINES (f) * info.dwSize.X;
dest.X = dest.Y = 0;
FillConsoleOutputAttribute (cur_screen, char_attr_normal, n, dest, &r);
if (n < 0)
{
scroll.Top = vpos - n;
- scroll.Bottom = FRAME_LINES (f);
+ scroll.Bottom = FRAME_TOTAL_LINES (f);
dest.Y = vpos;
}
else
{
scroll.Top = vpos;
- scroll.Bottom = FRAME_LINES (f) - n;
+ scroll.Bottom = FRAME_TOTAL_LINES (f) - n;
dest.Y = vpos + n;
}
clip.Top = clip.Left = scroll.Left = 0;
clip.Right = scroll.Right = FRAME_COLS (f);
- clip.Bottom = FRAME_LINES (f);
+ clip.Bottom = FRAME_TOTAL_LINES (f);
dest.X = 0;
/* Report the current cursor position. The following two functions
- mirror cm.h macros and are used in term.c's tty menu code, so they
- are not really "stubs". */
+ are used in term.c's tty menu code, so they are not really
+ "stubs". */
int
-curX (struct tty_display_info *tty)
+cursorX (struct tty_display_info *tty)
{
return cursor_coords.X;
}
int
-curY (struct tty_display_info *tty)
+cursorY (struct tty_display_info *tty)
{
return cursor_coords.Y;
}
initialize_w32_display (struct terminal *term, int *width, int *height)
{
CONSOLE_SCREEN_BUFFER_INFO info;
- Mouse_HLInfo *hlinfo;
term->rif = 0; /* No window based redisplay on the console. */
term->cursor_to_hook = w32con_move_cursor;
term->read_socket_hook = w32_console_read_socket;
term->mouse_position_hook = w32_console_mouse_position;
+ term->menu_show_hook = tty_menu_show;
/* The following are not used on the console. */
term->frame_rehighlight_hook = 0;
term->frame_raise_lower_hook = 0;
term->set_vertical_scroll_bar_hook = 0;
+ term->set_horizontal_scroll_bar_hook = 0;
term->condemn_scroll_bars_hook = 0;
term->redeem_scroll_bar_hook = 0;
term->judge_scroll_bars_hook = 0;