aboutsummaryrefslogtreecommitdiffstats
path: root/src/xterm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/xterm.c')
-rw-r--r--src/xterm.c126
1 files changed, 65 insertions, 61 deletions
diff --git a/src/xterm.c b/src/xterm.c
index 3755b478dbc..547bdbe8333 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -72,7 +72,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
72#include "atimer.h" 72#include "atimer.h"
73#include "keymap.h" 73#include "keymap.h"
74#include "font.h" 74#include "font.h"
75#include "fontset.h"
76#include "xsettings.h" 75#include "xsettings.h"
77#include "xgselect.h" 76#include "xgselect.h"
78#include "sysselect.h" 77#include "sysselect.h"
@@ -2651,7 +2650,10 @@ x_draw_underwave (struct glyph_string *s)
2651 2650
2652 /* Find and set clipping rectangle */ 2651 /* Find and set clipping rectangle */
2653 2652
2654 wave_clip = (XRectangle){ x0, y0, width, wave_height }; 2653 wave_clip.x = x0;
2654 wave_clip.y = y0;
2655 wave_clip.width = width;
2656 wave_clip.height = wave_height;
2655 get_glyph_string_clip_rect (s, &string_clip); 2657 get_glyph_string_clip_rect (s, &string_clip);
2656 2658
2657 if (!x_intersect_rectangles (&wave_clip, &string_clip, &final_clip)) 2659 if (!x_intersect_rectangles (&wave_clip, &string_clip, &final_clip))
@@ -10210,71 +10212,73 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
10210 } 10212 }
10211 10213
10212 { 10214 {
10213 const struct 10215 static const struct
10214 { 10216 {
10215 const char *name; 10217 const char *name;
10216 Atom *atom; 10218 int offset;
10217 } atom_refs[] = { 10219 } atom_refs[] = {
10218 { "WM_PROTOCOLS", &dpyinfo->Xatom_wm_protocols }, 10220#define ATOM_REFS_INIT(string, member) \
10219 { "WM_TAKE_FOCUS", &dpyinfo->Xatom_wm_take_focus }, 10221 { string, offsetof (struct x_display_info, member) },
10220 { "WM_SAVE_YOURSELF", &dpyinfo->Xatom_wm_save_yourself }, 10222 ATOM_REFS_INIT ("WM_PROTOCOLS", Xatom_wm_protocols)
10221 { "WM_DELETE_WINDOW", &dpyinfo->Xatom_wm_delete_window }, 10223 ATOM_REFS_INIT ("WM_TAKE_FOCUS", Xatom_wm_take_focus)
10222 { "WM_CHANGE_STATE", &dpyinfo->Xatom_wm_change_state }, 10224 ATOM_REFS_INIT ("WM_SAVE_YOURSELF", Xatom_wm_save_yourself)
10223 { "WM_CONFIGURE_DENIED", &dpyinfo->Xatom_wm_configure_denied }, 10225 ATOM_REFS_INIT ("WM_DELETE_WINDOW", Xatom_wm_delete_window)
10224 { "WM_MOVED", &dpyinfo->Xatom_wm_window_moved }, 10226 ATOM_REFS_INIT ("WM_CHANGE_STATE", Xatom_wm_change_state)
10225 { "WM_CLIENT_LEADER", &dpyinfo->Xatom_wm_client_leader }, 10227 ATOM_REFS_INIT ("WM_CONFIGURE_DENIED", Xatom_wm_configure_denied)
10226 { "Editres", &dpyinfo->Xatom_editres }, 10228 ATOM_REFS_INIT ("WM_MOVED", Xatom_wm_window_moved)
10227 { "CLIPBOARD", &dpyinfo->Xatom_CLIPBOARD }, 10229 ATOM_REFS_INIT ("WM_CLIENT_LEADER", Xatom_wm_client_leader)
10228 { "TIMESTAMP", &dpyinfo->Xatom_TIMESTAMP }, 10230 ATOM_REFS_INIT ("Editres", Xatom_editres)
10229 { "TEXT", &dpyinfo->Xatom_TEXT }, 10231 ATOM_REFS_INIT ("CLIPBOARD", Xatom_CLIPBOARD)
10230 { "COMPOUND_TEXT", &dpyinfo->Xatom_COMPOUND_TEXT }, 10232 ATOM_REFS_INIT ("TIMESTAMP", Xatom_TIMESTAMP)
10231 { "UTF8_STRING", &dpyinfo->Xatom_UTF8_STRING }, 10233 ATOM_REFS_INIT ("TEXT", Xatom_TEXT)
10232 { "DELETE", &dpyinfo->Xatom_DELETE }, 10234 ATOM_REFS_INIT ("COMPOUND_TEXT", Xatom_COMPOUND_TEXT)
10233 { "MULTIPLE", &dpyinfo->Xatom_MULTIPLE }, 10235 ATOM_REFS_INIT ("UTF8_STRING", Xatom_UTF8_STRING)
10234 { "INCR", &dpyinfo->Xatom_INCR }, 10236 ATOM_REFS_INIT ("DELETE", Xatom_DELETE)
10235 { "_EMACS_TMP_", &dpyinfo->Xatom_EMACS_TMP }, 10237 ATOM_REFS_INIT ("MULTIPLE", Xatom_MULTIPLE)
10236 { "TARGETS", &dpyinfo->Xatom_TARGETS }, 10238 ATOM_REFS_INIT ("INCR", Xatom_INCR)
10237 { "NULL", &dpyinfo->Xatom_NULL }, 10239 ATOM_REFS_INIT ("_EMACS_TMP_", Xatom_EMACS_TMP)
10238 { "ATOM", &dpyinfo->Xatom_ATOM }, 10240 ATOM_REFS_INIT ("TARGETS", Xatom_TARGETS)
10239 { "ATOM_PAIR", &dpyinfo->Xatom_ATOM_PAIR }, 10241 ATOM_REFS_INIT ("NULL", Xatom_NULL)
10240 { "CLIPBOARD_MANAGER", &dpyinfo->Xatom_CLIPBOARD_MANAGER }, 10242 ATOM_REFS_INIT ("ATOM", Xatom_ATOM)
10241 { "_XEMBED_INFO", &dpyinfo->Xatom_XEMBED_INFO }, 10243 ATOM_REFS_INIT ("ATOM_PAIR", Xatom_ATOM_PAIR)
10244 ATOM_REFS_INIT ("CLIPBOARD_MANAGER", Xatom_CLIPBOARD_MANAGER)
10245 ATOM_REFS_INIT ("_XEMBED_INFO", Xatom_XEMBED_INFO)
10242 /* For properties of font. */ 10246 /* For properties of font. */
10243 { "PIXEL_SIZE", &dpyinfo->Xatom_PIXEL_SIZE }, 10247 ATOM_REFS_INIT ("PIXEL_SIZE", Xatom_PIXEL_SIZE)
10244 { "AVERAGE_WIDTH", &dpyinfo->Xatom_AVERAGE_WIDTH }, 10248 ATOM_REFS_INIT ("AVERAGE_WIDTH", Xatom_AVERAGE_WIDTH)
10245 { "_MULE_BASELINE_OFFSET", &dpyinfo->Xatom_MULE_BASELINE_OFFSET }, 10249 ATOM_REFS_INIT ("_MULE_BASELINE_OFFSET", Xatom_MULE_BASELINE_OFFSET)
10246 { "_MULE_RELATIVE_COMPOSE", &dpyinfo->Xatom_MULE_RELATIVE_COMPOSE }, 10250 ATOM_REFS_INIT ("_MULE_RELATIVE_COMPOSE", Xatom_MULE_RELATIVE_COMPOSE)
10247 { "_MULE_DEFAULT_ASCENT", &dpyinfo->Xatom_MULE_DEFAULT_ASCENT }, 10251 ATOM_REFS_INIT ("_MULE_DEFAULT_ASCENT", Xatom_MULE_DEFAULT_ASCENT)
10248 /* Ghostscript support. */ 10252 /* Ghostscript support. */
10249 { "DONE", &dpyinfo->Xatom_DONE }, 10253 ATOM_REFS_INIT ("DONE", Xatom_DONE)
10250 { "PAGE", &dpyinfo->Xatom_PAGE }, 10254 ATOM_REFS_INIT ("PAGE", Xatom_PAGE)
10251 { "SCROLLBAR", &dpyinfo->Xatom_Scrollbar }, 10255 ATOM_REFS_INIT ("SCROLLBAR", Xatom_Scrollbar)
10252 { "_XEMBED", &dpyinfo->Xatom_XEMBED }, 10256 ATOM_REFS_INIT ("_XEMBED", Xatom_XEMBED)
10253 /* EWMH */ 10257 /* EWMH */
10254 { "_NET_WM_STATE", &dpyinfo->Xatom_net_wm_state }, 10258 ATOM_REFS_INIT ("_NET_WM_STATE", Xatom_net_wm_state)
10255 { "_NET_WM_STATE_FULLSCREEN", &dpyinfo->Xatom_net_wm_state_fullscreen }, 10259 ATOM_REFS_INIT ("_NET_WM_STATE_FULLSCREEN", Xatom_net_wm_state_fullscreen)
10256 { "_NET_WM_STATE_MAXIMIZED_HORZ", 10260 ATOM_REFS_INIT ("_NET_WM_STATE_MAXIMIZED_HORZ",
10257 &dpyinfo->Xatom_net_wm_state_maximized_horz }, 10261 Xatom_net_wm_state_maximized_horz)
10258 { "_NET_WM_STATE_MAXIMIZED_VERT", 10262 ATOM_REFS_INIT ("_NET_WM_STATE_MAXIMIZED_VERT",
10259 &dpyinfo->Xatom_net_wm_state_maximized_vert }, 10263 Xatom_net_wm_state_maximized_vert)
10260 { "_NET_WM_STATE_STICKY", &dpyinfo->Xatom_net_wm_state_sticky }, 10264 ATOM_REFS_INIT ("_NET_WM_STATE_STICKY", Xatom_net_wm_state_sticky)
10261 { "_NET_WM_STATE_HIDDEN", &dpyinfo->Xatom_net_wm_state_hidden }, 10265 ATOM_REFS_INIT ("_NET_WM_STATE_HIDDEN", Xatom_net_wm_state_hidden)
10262 { "_NET_WM_WINDOW_TYPE", &dpyinfo->Xatom_net_window_type }, 10266 ATOM_REFS_INIT ("_NET_WM_WINDOW_TYPE", Xatom_net_window_type)
10263 { "_NET_WM_WINDOW_TYPE_TOOLTIP", 10267 ATOM_REFS_INIT ("_NET_WM_WINDOW_TYPE_TOOLTIP",
10264 &dpyinfo->Xatom_net_window_type_tooltip }, 10268 Xatom_net_window_type_tooltip)
10265 { "_NET_WM_ICON_NAME", &dpyinfo->Xatom_net_wm_icon_name }, 10269 ATOM_REFS_INIT ("_NET_WM_ICON_NAME", Xatom_net_wm_icon_name)
10266 { "_NET_WM_NAME", &dpyinfo->Xatom_net_wm_name }, 10270 ATOM_REFS_INIT ("_NET_WM_NAME", Xatom_net_wm_name)
10267 { "_NET_SUPPORTED", &dpyinfo->Xatom_net_supported }, 10271 ATOM_REFS_INIT ("_NET_SUPPORTED", Xatom_net_supported)
10268 { "_NET_SUPPORTING_WM_CHECK", &dpyinfo->Xatom_net_supporting_wm_check }, 10272 ATOM_REFS_INIT ("_NET_SUPPORTING_WM_CHECK", Xatom_net_supporting_wm_check)
10269 { "_NET_WM_WINDOW_OPACITY", &dpyinfo->Xatom_net_wm_window_opacity }, 10273 ATOM_REFS_INIT ("_NET_WM_WINDOW_OPACITY", Xatom_net_wm_window_opacity)
10270 { "_NET_ACTIVE_WINDOW", &dpyinfo->Xatom_net_active_window }, 10274 ATOM_REFS_INIT ("_NET_ACTIVE_WINDOW", Xatom_net_active_window)
10271 { "_NET_FRAME_EXTENTS", &dpyinfo->Xatom_net_frame_extents }, 10275 ATOM_REFS_INIT ("_NET_FRAME_EXTENTS", Xatom_net_frame_extents)
10272 { "_NET_CURRENT_DESKTOP", &dpyinfo->Xatom_net_current_desktop }, 10276 ATOM_REFS_INIT ("_NET_CURRENT_DESKTOP", Xatom_net_current_desktop)
10273 { "_NET_WORKAREA", &dpyinfo->Xatom_net_workarea }, 10277 ATOM_REFS_INIT ("_NET_WORKAREA", Xatom_net_workarea)
10274 /* Session management */ 10278 /* Session management */
10275 { "SM_CLIENT_ID", &dpyinfo->Xatom_SM_CLIENT_ID }, 10279 ATOM_REFS_INIT ("SM_CLIENT_ID", Xatom_SM_CLIENT_ID)
10276 { "_XSETTINGS_SETTINGS", &dpyinfo->Xatom_xsettings_prop }, 10280 ATOM_REFS_INIT ("_XSETTINGS_SETTINGS", Xatom_xsettings_prop)
10277 { "MANAGER", &dpyinfo->Xatom_xsettings_mgr }, 10281 ATOM_REFS_INIT ("MANAGER", Xatom_xsettings_mgr)
10278 }; 10282 };
10279 10283
10280 int i; 10284 int i;
@@ -10299,7 +10303,7 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
10299 False, atoms_return); 10303 False, atoms_return);
10300 10304
10301 for (i = 0; i < atom_count; i++) 10305 for (i = 0; i < atom_count; i++)
10302 *atom_refs[i].atom = atoms_return[i]; 10306 *(Atom *) ((char *) dpyinfo + atom_refs[i].offset) = atoms_return[i];
10303 10307
10304 /* Manual copy of last atom */ 10308 /* Manual copy of last atom */
10305 dpyinfo->Xatom_xsettings_sel = atoms_return[i]; 10309 dpyinfo->Xatom_xsettings_sel = atoms_return[i];