X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/5bc6ddff00c50acf546530ef0e08a27140614d27..114f9c96795aff3b51b9060d7c9c1b77debcc99a:/src/xterm.h diff --git a/src/xterm.h b/src/xterm.h index 6bb68cf915..a766f863c4 100644 --- a/src/xterm.h +++ b/src/xterm.h @@ -1,13 +1,13 @@ /* Definitions and headers for communication with X protocol. Copyright (C) 1989, 1993, 1994, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GNU Emacs. -GNU Emacs is free software; you can redistribute it and/or modify +GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,9 +15,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GNU Emacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ +along with GNU Emacs. If not, see . */ #include #include @@ -69,7 +67,7 @@ typedef GtkWidget *xt_or_gtk_widget; #define WHITE_PIX_DEFAULT(f) WhitePixel (FRAME_X_DISPLAY (f), \ XScreenNumberOfScreen (FRAME_X_SCREEN (f))) -#define FONT_WIDTH(f) ((f)->max_bounds.width) +#define FONT_WIDTH(f) ((f)->max_width) #define FONT_HEIGHT(f) ((f)->ascent + (f)->descent) #define FONT_BASE(f) ((f)->ascent) #define FONT_DESCENT(f) ((f)->descent) @@ -90,6 +88,15 @@ typedef GtkWidget *xt_or_gtk_widget; | EnterWindowMask \ | VisibilityChangeMask) +#ifdef HAVE_X11R6_XIM +/* Data structure passed to xim_instantiate_callback. */ +struct xim_inst_t +{ + struct x_display_info *dpyinfo; + char *resource_name; +}; +#endif /* HAVE_X11R6_XIM */ + /* Structure recording X pixmap and reference count. If REFCOUNT is 0 then this record is free to be reused. */ @@ -143,9 +150,6 @@ struct x_display_info /* Number of planes on this screen. */ int n_planes; - /* Dimensions of this screen. */ - int height, width; - /* Mask of things that cause the mouse to be grabbed. */ int grabbed; @@ -162,6 +166,9 @@ struct x_display_info /* The cursor to use for vertical scroll bars. */ Cursor vertical_scroll_bar_cursor; + /* The invisible cursor used for pointer blanking. */ + Cursor invisible_cursor; + #ifdef USE_GTK /* The GDK cursor for scroll bars and popup menus. */ GdkCursor *xg_cursor; @@ -170,17 +177,6 @@ struct x_display_info /* X Resource data base */ XrmDatabase xrdb; - /* A table of all the fonts we have already loaded. */ - struct font_info *font_table; - - /* The current capacity of x_font_table. */ - int font_table_size; - -#ifdef USE_FONT_BACKEND - /* This provides a commonly used Font ID on this display. */ - XFontStruct *font; -#endif - /* Minimum width over all characters in all fonts in font_table. */ int smallest_char_width; @@ -223,9 +219,7 @@ struct x_display_info char *x_id_name; - /* The number of fonts actually stored in x_font_table. - font_table[n] is used and valid if 0 <= n < n_fonts. 0 <= - n_fonts <= font_table_size and font_table[i].name != 0. */ + /* The number of fonts opened for this display. */ int n_fonts; /* Pointer to bitmap records. */ @@ -323,10 +317,6 @@ struct x_display_info minibuffer. */ struct frame *x_highlight_frame; - /* The null pixel used for filling a character background with - background color of a gc. */ - Pixmap null_pixel; - /* The gray pixmap. */ Pixmap gray; @@ -334,6 +324,7 @@ struct x_display_info /* XIM (X Input method). */ XIM xim; XIMStyles *xim_styles; + struct xim_inst_t *xim_callback_data; #endif /* If non-null, a cache of the colors in the color map. Don't @@ -364,10 +355,21 @@ struct x_display_info size_t x_dnd_atoms_size; size_t x_dnd_atoms_length; - /* Extended window manager hints, Atoms supported by the window manager */ + /* Extended window manager hints, Atoms supported by the window manager and + atoms for settig the window type. */ Atom *net_supported_atoms; int nr_net_supported_atoms; Window net_supported_window; + Atom Xatom_net_window_type, Xatom_net_window_type_tooltip; + + /* Atoms dealing with maximization and fullscreen */ + Atom Xatom_net_wm_state, Xatom_net_wm_state_fullscreen_atom, + Xatom_net_wm_state_maximized_horz, Xatom_net_wm_state_maximized_vert, + Xatom_net_wm_state_sticky; + + /* XSettings atoms and windows. */ + Atom Xatom_xsettings_sel, Xatom_xsettings_prop, Xatom_xsettings_mgr; + Window xsettings_window; }; #ifdef HAVE_X_I18N @@ -380,10 +382,13 @@ extern void check_x P_ ((void)); extern struct frame *x_window_to_frame P_ ((struct x_display_info *, int)); -#if defined (USE_X_TOOLKIT) || defined (USE_GTK) extern struct frame *x_any_window_to_frame P_ ((struct x_display_info *, int)); -extern struct frame *x_non_menubar_window_to_frame P_ ((struct x_display_info *, int)); +extern struct frame *x_menubar_window_to_frame P_ ((struct x_display_info *, int)); extern struct frame *x_top_window_to_frame P_ ((struct x_display_info *, int)); + +#if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK) +#define x_any_window_to_frame x_window_to_frame +#define x_top_window_to_frame x_window_to_frame #endif /* This is a chain of structures for all the X displays currently in use. */ @@ -400,20 +405,16 @@ extern Lisp_Object Vx_pixel_size_width_font_regexp; extern struct x_display_info *x_display_info_for_display P_ ((Display *)); extern struct x_display_info *x_display_info_for_name P_ ((Lisp_Object)); +extern void x_set_frame_alpha P_ ((struct frame *)); extern struct x_display_info *x_term_init P_ ((Lisp_Object, char *, char *)); extern int x_display_ok P_ ((const char *)); -extern Lisp_Object x_list_fonts P_ ((struct frame *, Lisp_Object, int, int)); extern void select_visual P_ ((struct x_display_info *)); -extern struct font_info *x_get_font_info P_ ((struct frame *f, int)); -extern struct font_info *x_load_font P_ ((struct frame *, char *, int)); -extern struct font_info *x_query_font P_ ((struct frame *, char *)); -extern void x_find_ccl_program P_ ((struct font_info *)); -extern Lisp_Object x_get_font_repertory P_ ((struct frame *, - struct font_info *)); +struct font; + /* Each X frame object points to its own struct x_output object in the output_data.x field. The x_output structure contains the information that is specific to X windows. */ @@ -492,11 +493,7 @@ struct x_output int icon_bitmap; /* Default ASCII font of this frame. */ - XFontStruct *font; - -#ifdef USE_FONT_BACKEND - struct font *fontp; -#endif /* USE_FONT_BACKEND */ + struct font *font; /* The baseline offset of the default ASCII font. */ int baseline_offset; @@ -537,6 +534,7 @@ struct x_output Cursor hand_cursor; Cursor hourglass_cursor; Cursor horizontal_drag_cursor; + Cursor current_cursor; /* Window whose cursor is hourglass_cursor. This window is temporarily mapped to display an hourglass cursor. */ @@ -685,10 +683,6 @@ enum #define FRAME_TOOLBAR_HEIGHT(f) ((f)->output_data.x->toolbar_height) #define FRAME_BASELINE_OFFSET(f) ((f)->output_data.x->baseline_offset) -#ifdef USE_FONT_BACKEND -#define FRAME_FONT_OBJECT(f) ((f)->output_data.x->fontp) -#endif /* USE_FONT_BACKEND */ - /* 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) @@ -981,6 +975,11 @@ extern void set_vertical_scroll_bar P_ ((struct window *)); extern int x_dispatch_event P_ ((XEvent *, Display *)); extern unsigned int x_x_to_emacs_modifiers P_ ((struct x_display_info *, unsigned)); +extern int x_display_pixel_height P_ ((struct x_display_info *)); +extern int x_display_pixel_width P_ ((struct x_display_info *)); + +extern void x_set_sticky P_ ((struct frame *, Lisp_Object, Lisp_Object)); +extern void x_wait_for_event P_ ((struct frame *, int)); /* Defined in xselect.c */