# HG changeset patch # User Geoff Voelker # Date 873249205 0 # Node ID 72fa0e75a0fe68dc84218f83160090f5af1f27e9 # Parent 043ccce224fb2f1ab79c2b0a113d3470d38bb9f7 (w32_output): New fields menubar_widget, menubar_active, and pending_menu_activation. (VERTICAL_SCROLL_BAR_*): Use proportional scroll bar variables. (W32WindowPos): Delete definition. (WM_EMACS_SETFOCUS, WND_*_INDEX): New macros. (deferred_msg): New structure. (WM_MOUSEWHEEL): Define if not already defined. Necessary for pre VC5.0 distribution. (WM_EMACS_TRACKPOPUPMENU): New Macro. diff -r 043ccce224fb -r 72fa0e75a0fe src/w32term.h --- a/src/w32term.h Wed Sep 03 01:07:37 1997 +0000 +++ b/src/w32term.h Wed Sep 03 01:13:25 1997 +0000 @@ -213,6 +213,9 @@ struct w32_output { + /* Menubar "widget" handle. */ + HMENU menubar_widget; + /* Original palette (used to deselect real palette after drawing) */ HPALETTE old_palette; @@ -312,6 +315,13 @@ /* Nonzero means tried already to make this frame visible. */ char asked_for_visible; + + /* Nonzero means menubar is currently active. */ + char menubar_active; + + /* Nonzero means menubar is about to become active, but should be + brought up to date first. */ + volatile char pending_menu_activation; }; /* Get at the computed faces of an X window frame. */ @@ -462,11 +472,12 @@ inset the handle boundaries from the scroll bar edges. */ #define VERTICAL_SCROLL_BAR_LEFT_BORDER (0) #define VERTICAL_SCROLL_BAR_RIGHT_BORDER (0) -#define VERTICAL_SCROLL_BAR_TOP_BORDER (0) -#define VERTICAL_SCROLL_BAR_BOTTOM_BORDER (0) +#define VERTICAL_SCROLL_BAR_TOP_BORDER (vertical_scroll_bar_top_border) +#define VERTICAL_SCROLL_BAR_BOTTOM_BORDER (vertical_scroll_bar_bottom_border) /* Minimum lengths for scroll bar handles, in pixels. */ -#define VERTICAL_SCROLL_BAR_MIN_HANDLE (0) +#define VERTICAL_SCROLL_BAR_MIN_HANDLE (vertical_scroll_bar_min_handle) + /* Manipulating pixel sizes and character sizes. @@ -577,6 +588,11 @@ extern XFontStruct *w32_load_font (); extern void w32_unload_font (); +/* Define for earlier versions of Visual C */ +#ifndef WM_MOUSEWHEEL +#define WM_MOUSEWHEEL (0x020A) +#endif /* WM_MOUSEWHEEL */ + #define WM_EMACS_START (WM_USER + 1) #define WM_EMACS_KILL (WM_EMACS_START + 0x00) #define WM_EMACS_CREATEWINDOW (WM_EMACS_START + 0x01) @@ -585,22 +601,17 @@ #define WM_EMACS_SHOWWINDOW (WM_EMACS_START + 0x04) #define WM_EMACS_SETWINDOWPOS (WM_EMACS_START + 0x05) #define WM_EMACS_DESTROYWINDOW (WM_EMACS_START + 0x06) +#define WM_EMACS_TRACKPOPUPMENU (WM_EMACS_START + 0x07) +#define WM_EMACS_SETFOCUS (WM_EMACS_START + 0x08) #define WM_EMACS_END (WM_EMACS_START + 0x10) -typedef struct { - HWND hwndAfter; - int x; - int y; - int cx; - int cy; - int flags; -} W32WindowPos; +#define WND_FONTWIDTH_INDEX (0) +#define WND_LINEHEIGHT_INDEX (4) +#define WND_BORDER_INDEX (8) +#define WND_SCROLLBAR_INDEX (12) +#define WND_BACKGROUND_INDEX (16) +#define WND_LAST_INDEX (20) -#define WND_X_UNITS_INDEX (0) -#define WND_Y_UNITS_INDEX (4) -#define WND_BACKGROUND_INDEX (8) - -#define WND_LAST_INDEX (16) #define WND_EXTRA_BYTES (WND_LAST_INDEX) extern DWORD dwWindowsThreadId; @@ -614,6 +625,17 @@ RECT rect; } W32Msg; +/* Structure for recording message when input thread must return a + result that depends on lisp thread to compute. Lisp thread can + complete deferred messages out of order. */ +typedef struct deferred_msg +{ + struct deferred_msg * next; + W32Msg w32msg; + LRESULT result; + int completed; +} deferred_msg; + extern CRITICAL_SECTION critsect; extern void init_crit (); @@ -629,6 +651,7 @@ extern BOOL get_next_msg (); extern BOOL post_msg (); +extern void complete_deferred_msg (HWND hwnd, UINT msg, LRESULT result); extern void wait_for_sync (); extern BOOL parse_button ();