X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/9a650e62c8bd9ab1040db70e22683bc94e918cc8..3e2fb4db3f517dd051cd35c742355c492e085333:/src/xterm.h?ds=sidebyside diff --git a/src/xterm.h b/src/xterm.h index 2f29667684..89676e873a 100644 --- a/src/xterm.h +++ b/src/xterm.h @@ -78,10 +78,11 @@ typedef GtkWidget *xt_or_gtk_widget; #include "dispextern.h" #include "termhooks.h" -#define BLACK_PIX_DEFAULT(f) BlackPixel (FRAME_X_DISPLAY (f), \ - XScreenNumberOfScreen (FRAME_X_SCREEN (f))) -#define WHITE_PIX_DEFAULT(f) WhitePixel (FRAME_X_DISPLAY (f), \ - XScreenNumberOfScreen (FRAME_X_SCREEN (f))) +/* Black and white pixel values for the screen which frame F is on. */ +#define BLACK_PIX_DEFAULT(f) \ + BlackPixel (FRAME_X_DISPLAY (f), FRAME_X_SCREEN_NUMBER (f)) +#define WHITE_PIX_DEFAULT(f) \ + WhitePixel (FRAME_X_DISPLAY (f), FRAME_X_SCREEN_NUMBER (f)) #define FONT_WIDTH(f) ((f)->max_width) #define FONT_HEIGHT(f) ((f)->ascent + (f)->descent) @@ -141,8 +142,7 @@ struct x_display_info /* This says how to access this display in Xlib. */ Display *display; - /* This is a cons cell of the form (NAME . FONT-LIST-CACHE). - The same cons cell also appears in x_display_name_list. */ + /* This is a cons cell of the form (NAME . FONT-LIST-CACHE). */ Lisp_Object name_list_element; /* Number of frames that are on this display. */ @@ -301,9 +301,41 @@ struct x_display_info minibuffer. */ struct frame *x_highlight_frame; + /* The frame waiting to be auto-raised in XTread_socket. */ + struct frame *x_pending_autoraise_frame; + + /* The frame where the mouse was last time we reported a ButtonPress event. */ + struct frame *last_mouse_frame; + + /* The frame where the mouse was last time we reported a mouse position. */ + struct frame *last_mouse_glyph_frame; + + /* The frame where the mouse was last time we reported a mouse motion. */ + struct frame *last_mouse_motion_frame; + + /* The scroll bar in which the last X motion event occurred. */ + struct scroll_bar *last_mouse_scroll_bar; + /* Time of last user interaction as returned in X events on this display. */ Time last_user_time; + /* Position where the mouse was last time we reported a motion. + This is a position on last_mouse_motion_frame. */ + int last_mouse_motion_x; + int last_mouse_motion_y; + + /* Where the mouse was last time we reported a mouse position. + This is a rectangle on last_mouse_glyph_frame. */ + XRectangle last_mouse_glyph; + + /* Time of last mouse movement on this display. This is a hack because + we would really prefer that XTmouse_position would return the time + associated with the position it returns, but there doesn't seem to be + any way to wrest the time-stamp from the server along with the position + query. So, we just keep track of the time of the last movement we + received, and return that in hopes that it's somewhat accurate. */ + Time last_mouse_movement_time; + /* The gray pixmap. */ Pixmap gray; @@ -379,12 +411,6 @@ extern int use_xim; /* This is a chain of structures for all the X displays currently in use. */ extern struct x_display_info *x_display_list; -/* This is a list of cons cells, each of the form (NAME . FONT-LIST-CACHE), - one for each element of x_display_list and in the same order. - NAME is the name of the frame. - FONT-LIST-CACHE records previous values returned by x-list-fonts. */ -extern Lisp_Object x_display_name_list; - extern struct x_display_info *x_display_info_for_display (Display *); extern struct frame *x_top_window_to_frame (struct x_display_info *, int); extern struct x_display_info *x_term_init (Lisp_Object, char *, char *); @@ -579,7 +605,6 @@ struct x_output { GC gc; unsigned long pixel; - int allocated_p; } black_relief, white_relief; @@ -700,20 +725,22 @@ enum #define FRAME_BASELINE_OFFSET(f) ((f)->output_data.x->baseline_offset) /* This gives the x_display_info structure for the display F is on. */ -#define FRAME_X_DISPLAY_INFO(f) ((f)->output_data.x->display_info) +#define FRAME_DISPLAY_INFO(f) ((f)->output_data.x->display_info) /* This is the `Display *' which frame F is on. */ -#define FRAME_X_DISPLAY(f) (FRAME_X_DISPLAY_INFO (f)->display) +#define FRAME_X_DISPLAY(f) (FRAME_DISPLAY_INFO (f)->display) /* This is the `Screen *' which frame F is on. */ -#define FRAME_X_SCREEN(f) (FRAME_X_DISPLAY_INFO (f)->screen) +#define FRAME_X_SCREEN(f) (FRAME_DISPLAY_INFO (f)->screen) + +/* This is the screen index number of screen which frame F is on. */ #define FRAME_X_SCREEN_NUMBER(f) XScreenNumberOfScreen (FRAME_X_SCREEN (f)) /* This is the Visual which frame F is on. */ -#define FRAME_X_VISUAL(f) FRAME_X_DISPLAY_INFO (f)->visual +#define FRAME_X_VISUAL(f) FRAME_DISPLAY_INFO (f)->visual /* This is the Colormap which frame F uses. */ -#define FRAME_X_COLORMAP(f) FRAME_X_DISPLAY_INFO (f)->cmap +#define FRAME_X_COLORMAP(f) FRAME_DISPLAY_INFO (f)->cmap /* The difference in pixels between the top left corner of the Emacs window (including possible window manager decorations) @@ -726,21 +753,11 @@ enum #define FRAME_XIC(f) ((f)->output_data.x->xic) -#define FRAME_X_XIM(f) (FRAME_X_DISPLAY_INFO (f)->xim) -#define FRAME_X_XIM_STYLES(f) (FRAME_X_DISPLAY_INFO (f)->xim_styles) +#define FRAME_X_XIM(f) (FRAME_DISPLAY_INFO (f)->xim) +#define FRAME_X_XIM_STYLES(f) (FRAME_DISPLAY_INFO (f)->xim_styles) #define FRAME_XIC_STYLE(f) ((f)->output_data.x->xic_style) #define FRAME_XIC_FONTSET(f) ((f)->output_data.x->xic_xfs) -/* Value is the smallest width of any character in any font on frame F. */ - -#define FRAME_SMALLEST_CHAR_WIDTH(F) \ - FRAME_X_DISPLAY_INFO(F)->smallest_char_width - -/* Value is the smallest height of any font on frame F. */ - -#define FRAME_SMALLEST_FONT_HEIGHT(F) \ - FRAME_X_DISPLAY_INFO(F)->smallest_font_height - /* X-specific scroll bar stuff. */ /* We represent scroll bars as lisp vectors. This allows us to place @@ -803,6 +820,7 @@ struct scroll_bar /* Turning a lisp vector value into a pointer to a struct scroll_bar. */ #define XSCROLL_BAR(vec) ((struct scroll_bar *) XVECTOR (vec)) +#ifdef USE_X_TOOLKIT /* Extract the X widget of the scroll bar from a struct scroll_bar. XtWindowToWidget should be fast enough since Xt uses a hash table @@ -819,14 +837,14 @@ struct scroll_bar ptr->x_window = window; \ } while (0) +#endif /* USE_X_TOOLKIT */ /* Return the inside width of a vertical scroll bar, given the outside width. */ #define VERTICAL_SCROLL_BAR_INSIDE_WIDTH(f, width) \ ((width) \ - VERTICAL_SCROLL_BAR_LEFT_BORDER \ - - VERTICAL_SCROLL_BAR_RIGHT_BORDER \ - - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2) + - VERTICAL_SCROLL_BAR_RIGHT_BORDER) /* Return the length of the rectangle within which the top of the handle must stay. This isn't equivalent to the inside height, @@ -863,11 +881,6 @@ struct scroll_bar /* Minimum lengths for scroll bar handles, in pixels. */ #define VERTICAL_SCROLL_BAR_MIN_HANDLE (5) -/* Trimming off a few pixels from each side prevents - text from glomming up against the scroll bar */ -#define VERTICAL_SCROLL_BAR_WIDTH_TRIM (0) - - /* If a struct input_event has a kind which is SELECTION_REQUEST_EVENT or SELECTION_CLEAR_EVENT, then its contents are really described by this structure. */ @@ -899,11 +912,6 @@ struct selection_input_event #define SELECTION_EVENT_TIME(eventp) \ (((struct selection_input_event *) (eventp))->time) -/* From xselect.c. */ - -void x_handle_selection_notify (XSelectionEvent *); -void x_handle_property_notify (XPropertyEvent *); - /* From xfns.c. */ extern void x_free_gcs (struct frame *); @@ -941,7 +949,7 @@ extern bool x_alloc_lighter_color_for_widget (Widget, Display *, Colormap, extern bool x_alloc_nearest_color (struct frame *, Colormap, XColor *); extern void x_query_color (struct frame *f, XColor *); extern void x_clear_area (Display *, Window, int, int, int, int); -#if defined HAVE_MENUS && !defined USE_X_TOOLKIT && !defined USE_GTK +#if !defined USE_X_TOOLKIT && !defined USE_GTK extern void x_mouse_leave (struct x_display_info *); #endif @@ -955,10 +963,10 @@ extern int x_display_pixel_width (struct x_display_info *); extern void x_set_sticky (struct frame *, Lisp_Object, Lisp_Object); extern void x_wait_for_event (struct frame *, int); -/* Defined in xselect.c */ +/* Defined in xselect.c. */ -extern void x_handle_property_notify (XPropertyEvent *); -extern void x_handle_selection_notify (XSelectionEvent *); +extern void x_handle_property_notify (const XPropertyEvent *); +extern void x_handle_selection_notify (const XSelectionEvent *); extern void x_handle_selection_event (struct input_event *); extern void x_clear_frame_selections (struct frame *); @@ -970,9 +978,9 @@ extern void x_send_client_event (Lisp_Object display, Lisp_Object values); extern int x_handle_dnd_message (struct frame *, - XClientMessageEvent *, + const XClientMessageEvent *, struct x_display_info *, - struct input_event *bufp); + struct input_event *); extern int x_check_property_data (Lisp_Object); extern void x_fill_property_data (Display *, Lisp_Object, @@ -988,7 +996,6 @@ extern void x_clipboard_manager_save_all (void); /* Defined in xfns.c */ -extern struct x_display_info * check_x_display_info (Lisp_Object); extern Lisp_Object x_get_focus_frame (struct frame *); #ifdef USE_GTK @@ -1020,6 +1027,10 @@ extern void x_free_dpy_colors (Display *, Screen *, Colormap, /* Defined in xmenu.c */ +#if defined USE_X_TOOLKIT || defined USE_GTK +extern Lisp_Object xw_popup_dialog (struct frame *, Lisp_Object, Lisp_Object); +#endif + #if defined USE_GTK || defined USE_MOTIF extern void x_menu_set_in_use (int); #endif