diff options
Diffstat (limited to 'src/xterm.c')
| -rw-r--r-- | src/xterm.c | 126 |
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]; |