123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- /*
- * Main state structure for an instance of the Windows PuTTY front
- * end, containing all the PuTTY objects and all the Windows API
- * resources like the window handle.
- */
- typedef struct WinGuiSeat WinGuiSeat;
- struct PopupMenu {
- HMENU menu;
- };
- enum { SYSMENU, CTXMENU }; /* indices into popup_menus field */
- #define FONT_NORMAL 0
- #define FONT_BOLD 1
- #define FONT_UNDERLINE 2
- #define FONT_BOLDUND 3
- #define FONT_WIDE 0x04
- #define FONT_HIGH 0x08
- #define FONT_NARROW 0x10
- #define FONT_OEM 0x20
- #define FONT_OEMBOLD 0x21
- #define FONT_OEMUND 0x22
- #define FONT_OEMBOLDUND 0x23
- #define FONT_MAXNO 0x40
- #define FONT_SHIFT 5
- enum BoldMode {
- BOLD_NONE, BOLD_SHADOW, BOLD_FONT
- };
- enum UnderlineMode {
- UND_LINE, UND_FONT
- };
- struct _dpi_info {
- POINT cur_dpi;
- RECT new_wnd_rect;
- };
- /*
- * Against the future possibility of having more than one of these
- * in a process (and the current possibility of having zero), we
- * keep a linked list of all live WinGuiSeats, so that cleanups
- * can be done to any that exist.
- */
- struct WinGuiSeatListNode {
- struct WinGuiSeatListNode *next, *prev;
- };
- extern struct WinGuiSeatListNode wgslisthead; /* static end pointer */
- struct WinGuiSeat {
- struct WinGuiSeatListNode wgslistnode;
- Seat seat;
- TermWin termwin;
- LogPolicy logpolicy;
- HWND term_hwnd;
- int extra_width, extra_height;
- int font_width, font_height;
- bool font_dualwidth, font_varpitch;
- int offset_width, offset_height;
- bool was_zoomed;
- int prev_rows, prev_cols; // FIXME I don't think these are even used
- HBITMAP caretbm;
- int caret_x, caret_y;
- int kbd_codepage;
- Ldisc *ldisc;
- Backend *backend;
- cmdline_get_passwd_input_state cmdline_get_passwd_state;
- struct unicode_data ucsdata;
- bool session_closed;
- bool reconfiguring;
- const SessionSpecial *specials;
- HMENU specials_menu;
- int n_specials;
- struct PopupMenu popup_menus[2];
- HMENU savedsess_menu;
- Conf *conf;
- LogContext *logctx;
- Terminal *term;
- int cursor_type;
- int vtmode;
- HFONT fonts[FONT_MAXNO];
- LOGFONT lfont;
- bool fontflag[FONT_MAXNO];
- enum BoldMode bold_font_mode;
- bool bold_colours;
- enum UnderlineMode und_mode;
- int descent, font_strikethrough_y;
- COLORREF colours[OSC4_NCOLOURS];
- HPALETTE pal;
- LPLOGPALETTE logpal;
- bool tried_pal;
- COLORREF colorref_modifier;
- struct _dpi_info dpi_info;
- int dbltime, lasttime, lastact;
- Mouse_Button lastbtn;
- bool send_raw_mouse;
- int wheel_accumulator;
- bool pointer_indicates_raw_mouse;
- BusyStatus busy_status;
- wchar_t *window_name, *icon_name;
- int alt_numberpad_accumulator;
- int compose_state;
- int compose_char;
- WPARAM compose_keycode;
- HDC wintw_hdc;
- bool resizing;
- bool need_backend_resize;
- long next_flash;
- bool flashing;
- long last_beep_time;
- bool ignore_clip;
- bool fullscr_on_max;
- bool processed_resize;
- bool in_scrollbar_loop;
- UINT last_mousemove;
- WPARAM last_wm_mousemove_wParam, last_wm_ncmousemove_wParam;
- LPARAM last_wm_mousemove_lParam, last_wm_ncmousemove_lParam;
- wchar_t pending_surrogate;
- };
- extern const LogPolicyVtable win_gui_logpolicy_vt; /* in dialog.c */
- static inline void wgs_link(WinGuiSeat *wgs)
- {
- wgs->wgslistnode.prev = wgslisthead.prev;
- wgs->wgslistnode.next = &wgslisthead;
- wgs->wgslistnode.prev->next = &wgs->wgslistnode;
- wgs->wgslistnode.next->prev = &wgs->wgslistnode;
- }
- static inline void wgs_unlink(WinGuiSeat *wgs)
- {
- wgs->wgslistnode.prev->next = wgs->wgslistnode.next;
- wgs->wgslistnode.next->prev = wgs->wgslistnode.prev;
- }
|