Commit graph

1491 commits

Author SHA1 Message Date
Chong Yidong
4d3762f78f * xterm.c (x_draw_image_relief): Fix last fix. 2012-02-22 17:08:36 +08:00
Chong Yidong
86b847b644 * src/xterm.c (x_draw_image_relief): Add missing type check for Vtool_bar_button_margin.
Fixes: debbugs:10743
2012-02-22 14:03:30 +08:00
Glenn Morris
44f9273998 Native scroll-bars are not implemented for Nextstep (bug#10673)
* configure.in [HAVE_NS]: Error if use --without-toolkit-scroll-bars.

* src/nsterm.m (syms_of_nsterm) <x-toolkit-scroll-bars>:
Unconditionally set to t.

* src/nsterm.m (syms_of_nsterm) <x-toolkit-scroll-bars>:
* src/w32term.c (syms_of_w32term) <x-toolkit-scroll-bars>:
* src/xterm.c (syms_of_xterm) <x-toolkit-scroll-bars>: Doc fix.
2012-02-01 21:12:57 -05:00
Glenn Morris
9789766834 x-toolkit-scroll-bars doc fix.
* src/nsterm.m (syms_of_nsterm) <x-toolkit-scroll-bars>:
* src/xterm.c (syms_of_xterm) <x-toolkit-scroll-bars>: Sync docs.
2012-01-30 19:07:38 -08:00
David Benjamin
75bf0d3339 Fix focus handling for embedded frames.
* xfns.c (Fx_focus_frame): Use it for embedded frames.

* xterm.c (x_embed_request_focus): New function.

* xterm.h: Add prototype.

Fixes: debbugs:9977
2012-01-07 15:02:06 +08:00
Glenn Morris
acaf905b11 Add 2012 to FSF copyright years for Emacs files 2012-01-05 01:46:05 -08:00
Paul Eggert
99d990817c Spelling fixes. 2011-12-18 22:21:24 -08:00
Jan Djärv
7b9d523a07 * src/xterm.c (x_term_init): Move call to gdk_window_add_filter before
gtk_init.

Fixes: debbugs:10100
2011-12-10 23:53:28 +01:00
Paul Eggert
fa46310344 Spelling fixes. 2011-12-05 00:55:25 -08:00
Jan Djärv
c052ead41f * widget.c (update_wm_hints): Return if wmshell is null.
(widget_update_wm_size_hints): New function.

* widget.h (widget_update_wm_size_hints): Declare.

* xterm.c (x_wm_set_size_hint): If USE_X_TOOLKIT, call
widget_update_wm_size_hints.

Fixes: debbugs:10104
2011-12-03 20:15:20 +01:00
Jan Djärv
2b56b87e02 * xterm.c (handle_one_xevent): Only set async_visible and friends
if net_wm_state_hidden_seen is non-zero
(get_current_wm_state):  Set net_wm_state_hidden_seen to 1 if
_NET_WM_STATE_HIDDEN is in NET_WM_STATE.

* xterm.h (struct x_output): net_wm_state_hidden_seen is new.

Fixes: debbugs:10002
2011-11-29 19:08:53 +01:00
Jan Djärv
e7cfd277bd * xterm.c (x_clear_frame): Reinstate the XClearWindow call. 2011-11-21 19:01:04 +01:00
Juanma Barranquero
cd1181dbec Fix typos. 2011-11-20 04:48:53 +01:00
Paul Eggert
5396468298 Spelling fixes. 2011-11-19 01:18:31 -08:00
Paul Eggert
4c36be58ca Spelling fixes. 2011-11-17 01:09:20 -08:00
Jan Djärv
6e56383b57 Fix bug 9869.
xterm.c: Include X11/Xproto.h if HAVE_GTK3.
(x_error_handler): Ignore BadMatch for X_SetInputFocus for
HAVE_GTK3 (Bug#9869).
2011-10-30 19:04:13 +01:00
Jan Djärv
b77a6a7f9c Fix hang after C-z in gnome-shell.
* xterm.c: Declare x_handle_net_wm_state to return int.
(handle_one_xevent): Check if we are iconified but don't have
_NET_WM_STATE_HIDDEN.  If do, treat as deiconify.
(get_current_wm_state): Return non-zero if not hidden,
check for _NET_WM_STATE_HIDDEN (Bug#9893).
(do_ewmh_fullscreen): Ignore return value from get_current_wm_state.
(x_handle_net_wm_state): Return what get_current_wm_state returns.
(x_term_init): Initialize dpyinfo->Xatom_net_wm_state_hidden.

* xterm.h (x_display_info): Add Xatom_net_wm_state_hidden (Bug#9893).
2011-10-30 18:17:48 +01:00
Stefan Monnier
6b02f655f1 * src/xterm.c (frame_highlight, frame_unhighlight): Ignore unexplained
errors in XSetWindowBorder.

Fixes: debbugs:9310
2011-10-14 13:44:39 -04:00
Eli Zaretskii
bd01620e01 Add comments about special meaning of TAB characters in compositions.
src/xterm.c (x_draw_composite_glyph_string_foreground):
 src/w32term.c (x_draw_composite_glyph_string_foreground):
 src/term.c (encode_terminal_code):
 src/composite.c (composition_update_it, get_composition_id):
 src/xdisp.c (get_next_display_element)
 (fill_composite_glyph_string): Add comments about special meaning
 of TAB characters in a composition.
2011-09-15 19:22:58 +03:00
Paul Eggert
1c14176cfd Remove unused external symbols.
* dispextern.h (calc_pixel_width_or_height): Remove decl.
* xdisp.c (calc_pixel_width_or_height): Now static.
* doprnt.c (exprintf) [! (HAVE_X_WINDOWS && USE_X_TOOLKIT)]: Remove.
* indent.c (check_display_width):
* w32term.c: Fix comment to match code.
* xterm.c, xterm.h (x_catching_errors): Remove.
2011-09-14 14:45:51 -07:00
Juanma Barranquero
5e617bc2b6 Whitespace changes. 2011-09-09 03:06:52 +02:00
Paul Eggert
8666506ecd * src/doprnt.c (esnprintf): Remove. All uses removed.
Suggested by Chong Yidong in <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9412#23>.
2011-09-01 07:44:49 -07:00
Paul Eggert
61bfeeb79d Avoid the use of snprintf.
* font.c (APPEND_SNPRINTF): Remove.
(font_unparse_xlfd):
* xterm.c (x_io_error_quitter):
Use esnprintf, not snprintf.  That way, we don't have to worry
about porting to ancient platforms that lack snprintf.
(x_term_init): Use sprintf, not snprintf.
2011-08-30 22:50:49 -07:00
Paul Eggert
ae58ff1fbc * xterm.c (x_io_error_quitter): Don't overrun sprintf buffer. 2011-08-29 13:03:30 -07:00
Paul Eggert
0e51f7172b Merge from trunk. 2011-08-04 19:19:34 -07:00
Paul Eggert
0065d05491 Adjust in response to jan.h.d's comments.
See, for example <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9196#26>.
2011-08-04 19:15:35 -07:00
Jan Djärv
99aaf75f7c Set _NET_WM_WINDOW_OPACITY on outer window manager window also.
* xterm.c (x_find_topmost_parent): New function.
(x_set_frame_alpha): Find topmost parent window with
x_find_topmost_parent and set the property there also.
(handle_one_xevent): Call x_set_frame_alpha on ReparentNotify.

Fixes: debbugs:9181
2011-08-04 13:06:22 +02:00
Paul Eggert
3256efcee3 * xterm.c: Integer and memory overflow issues.
(x_color_cells, handle_one_xevent, x_term_init):
Check for size calculation overflow.
(x_color_cells): Don't store size until memory allocation succeeds.
(handle_one_xevent): Use ptrdiff_t, not int, for byte counts.
(x_term_init): Don't assume length fits in int (sprintf is limited
to int size).
2011-07-28 22:12:49 -07:00
Paul Eggert
50849c52f8 * xterm.c: don't go over XClientMessageEvent limit
(scroll_bar_windows_size): Now ptrdiff_t, as we prefer signed.
(x_send_scroll_bar_event): Likewise.  Check that the size does not
exceed limits imposed by XClientMessageEvent, as well as the usual
ptrdiff_t and size_t limits.
2011-07-17 13:56:13 -07:00
Juanma Barranquero
cd3520a41d Move DEFSYM to lisp.h and use everywhere. 2011-06-24 23:25:22 +02:00
Paul Eggert
85fece3ec2 GLYPH_DEBUG fixes
The following patches are for when GLYPH_DEBUG && !XASSERT.
* dispextern.h (trace_redisplay_p, dump_glyph_string):
* dispnew.c (flush_stdout):
* xdisp.c (dump_glyph_row, dump_glyph_matrix, dump_glyph):
Mark as externally visible.
* dispnew.c (check_window_matrix_pointers): Now static.
* dispnew.c (window_to_frame_vpos):
* xfns.c (unwind_create_frame):
* xterm.c (x_check_font): Remove unused local.
* scroll.c (CHECK_BOUNDS):
* xfaces.c (cache_fache): Rename local to avoid shadowing.
* xfns.c, w32fns.c (image_cache_refcount, dpyinfo_refcount): Now static.
* xdisp.c (check_window_end): Now a no-op if !XASSERTS.
(debug_first_unchanged_at_end_vpos, debug_last_unchanged_at_beg_vpos)
(debug_dvpos, debug_dy, debug_delta, debug_delta_bytes, debug_end_vpos):
Now static.
(debug_method_add): Use va_list and vsprintf rather than relying
on undefined behavior with wrong number of arguments.
(dump_glyph, dump_glyph_row, Fdump_glyph_matrix):
Don't assume ptrdiff_t and EMACS_INT are the same width as int.
In this code, it's OK to assume C99 behavior for ptrdiff_t formats
since we're not interested in debugging glyphs with old libraries.
* xfaces.c (cache_face): Move debugging code earlier; this pacifies
GCC 4.6.0's static checking.
2011-06-22 11:15:23 -07:00
Paul Eggert
0766b489e1 * dispextern.h (struct face.stipple):
* image.c (x_bitmap_height, x_bitmap_width, x_bitmap_pixmap)
(x_bitmap_mask, x_allocate_bitmap_record)
(x_create_bitmap_from_data, x_create_bitmap_from_file)
(x_destroy_bitmap, x_destroy_all_bitmaps, x_create_bitmap_mask)
(x_create_bitmap_from_xpm_data):
* nsterm.h (struct ns_display_info.bitmaps_size, .bitmaps_last):
* w32term.h (struct w32_display_info.icon_bitmap_id, .bitmaps_size)
(.bitmaps_last):
* xfaces.c (load_pixmap):
* xterm.c (x_bitmap_icon, x_wm_set_icon_pixmap):
* xterm.h (struct x_display_info.icon_bitmap_id, .bitmaps_size)
(.bitmaps_last, struct x_output.icon_bitmap):
Use ptrdiff_t, not int, for bitmap indexes.
(x_allocate_bitmap_record): Check for size overflow.
* dispextern.h, lisp.h: Adjust to API changes elsewhere.
2011-06-21 23:16:16 -07:00
Paul Eggert
3de73e5ee5 * xterm.c (xim_initialize, same_x_server): Strlen may not fit in int. 2011-06-21 13:43:08 -07:00
Paul Eggert
a690a978ec * xterm.c (x_alloc_nearest_color_1): Go back to original algorithm. 2011-06-13 09:08:46 -07:00
Paul Eggert
01103c441a Merge from trunk. 2011-06-13 01:00:15 -07:00
Paul Eggert
5efd304be9 * xterm.c (x_alloc_nearest_color_1): Use a more-precise algorithm
for nearest color, one that neither overflows nor relies on unsigned
arithmetic.
2011-06-13 00:53:14 -07:00
Paul Eggert
578c21e6cb Remove unnecessary casts.
* xterm.c (x_term_init):
* xfns.c (x_set_border_pixel):
* widget.c (create_frame_gcs): Remove casts to unsigned long etc.
These aren't needed now that we assume ANSI C.
2011-06-12 23:53:31 -07:00
Paul Eggert
6da655361c * xterm.c (handle_one_xevent): Omit unnecessary casts to unsigned. 2011-06-12 22:49:35 -07:00
Paul Eggert
4475bec4dd * buffer.c (Qclone_number): Remove for now, as it's unused.
(record_buffer, Funrecord_buffer): Rename local to avoid shadowing.
(record_buffer): Remove unused local.
* frame.c (other_visible_frames, frame_buffer_list): Now static.
(set_frame_buffer_list): Remove; unused.
* frame.h (other_visible_frames): Remove decl.
* keyboard.h (menu_items_inuse): Declare only if USE_GTK || USE_MOTIF.
* lisp.h (frame_buffer_list, set_frame_buffer_list): Remove decls.
(add_gpm_wait_descriptor, delete_gpm_wait_descriptor): Declare only
if HAVE_GPM.
* menu.c (menu_items_inuse): Now static unless USE_GTK || USE_MOTIF.
* process.c (add_gpm_wait_descriptor, delete_gpm_wait_descriptor):
Define only if HAVE_GPM.
* widget.c (EmacsFrameResize, emacsFrameClassRec): Now static.
(update_hints_inhibit): Remove; never set.  All uses removed.
* widgetprv.h (emacsFrameClassRec): Remove decl.
* window.c (delete_deletable_window): Now returns void, since it
wasn't returning anything.
(compare_window_configurations): Remove unused locals.
* xfns.c (x_set_scroll_bar_default_width): Remove unused locals.
* xmenu.c (x_menu_set_in_use): Define only if USE_GTK || USE_MOTIF.
Omit no-longer-needed #ifdef USE_X_TOOLKIT, since USE_X_TOOLKIT is
implied by USE_GTK || USE_MOTIF.
(dialog_selection_callback) [!USE_GTK]: Prefer intptr_t for integers
the same widths as pointers.  This follows up on the 2011-05-06 patch.
* xterm.c (x_alloc_lighter_color_for_widget): Define only if USE_LUCID.
* xterm.h: Likewise.
(x_menu_set_in_use): Declare only if USE_GTK || USE_MOTIF.
2011-06-11 14:31:32 -07:00
Paul Eggert
86f3178890 Merge from trunk. 2011-05-30 22:45:07 -07:00
Paul Eggert
531b01656f [ChangeLog]
Malloc failure behavior now depends on size of allocation.
* lib/allocator.h (struct allocator.die): New size arg.
* lib/careadlinkat.c (careadlinkat): Pass size to 'die' function.
If the actual problem is an ssize_t limitation, not a size_t or
malloc failure, fail with errno == ENAMETOOLONG instead of calling 'die'.
[src/ChangeLog]
Malloc failure behavior now depends on size of allocation.
* alloc.c (buffer_memory_full, memory_full): New arg NBYTES.
* lisp.h: Change signatures accordingly.
* alloc.c, buffer.c, editfns.c, menu.c, minibuf.c, xterm.c:
All callers changed.
2011-05-30 09:47:35 -07:00
Paul Eggert
55d4c1b248 [ChangeLog]
Use 'inline', not 'INLINE'.
* configure.in, autogen/config.in (INLINE): Remove.
[lib-src/ChangeLog]
Use 'inline', not 'INLINE'.
* etags.c (hash): Now inline unconditionally.
* make-docfile.c (put_char): inline, not INLINE.
[nt/ChangeLog]
Use 'inline', not 'INLINE'.
* config.nt (INLINE): Remove.
[src/ChangeLog]
Use 'inline', not 'INLINE'.
* alloc.c, fontset.c (INLINE): Remove.
* alloc.c, bidi.c, charset.c, coding.c, dispnew.c, fns.c, image.c:
* intervals.c, keyboard.c, process.c, syntax.c, textprop.c, w32term.c:
* xdisp.c, xfaces.c, xterm.c: Replace all uses of INLINE with inline.
* gmalloc.c (register_heapinfo): Use inline unconditionally.
* lisp.h (LISP_MAKE_RVALUE): Use inline, not __inline__.
2011-05-28 15:39:39 -07:00
Chong Yidong
a9f737eef6 Support X clipboard managers.
* lisp/select.el (xselect-convert-to-targets): Add MULTIPLE target to list.
(xselect-convert-to-save-targets): New function.

* src/xselect.c: Support for clipboard managers.
(Vselection_alist): Move to termhooks.h as terminal-local var.
(LOCAL_SELECTION): New macro.
(x_atom_to_symbol): Handle x_display_info_for_display fail case.
(symbol_to_x_atom): Remove gratuitous arg.
(x_handle_selection_request, lisp_data_to_selection_data)
(x_get_foreign_selection, Fx_register_dnd_atom): Callers changed.
(x_own_selection, x_get_local_selection, x_convert_selection): New
arg, specifying work frame.  Use terminal-local Vselection_alist.
(some_frame_on_display): Delete unused function.
(Fx_own_selection_internal, Fx_get_selection_internal)
(Fx_disown_selection_internal, Fx_selection_owner_p)
(Fx_selection_exists_p): New optional frame arg.
(frame_for_x_selection, Fx_clipboard_manager_save): New functions.
(x_handle_selection_clear): Don't treat other terminals with the
same keyboard specially.  Use the terminal-local Vselection_alist.
(x_clear_frame_selections): Use Frun_hook_with_args.

* src/termhooks.h (Vselection_alist): Make it terminal-local.

* src/terminal.c (create_terminal): Initialize it.

* src/xterm.c (x_term_init): Intern ATOM and CLIPBOARD_MANAGER atoms.

* src/xterm.h: Add support for those atoms.
2011-05-27 12:17:59 -04:00
Paul Eggert
067a69a2d3 Merge: user-interface timestamps and other int overflow patches. 2011-05-15 10:17:44 -07:00
Paul Eggert
08dc5ae68e Be more systematic about user-interface timestamps.
Before, the code sometimes used 'Time', sometimes 'unsigned long',
and sometimes 'EMACS_UINT', to represent these timestamps.  This
change causes it to use 'Time' uniformly, as that's what X uses.
This makes the code easier to follow, and makes it easier to catch
integer overflow bugs such as Bug#8664.
* frame.c (Fmouse_position, Fmouse_pixel_position):
Use Time, not unsigned long, for user-interface timestamps.
* keyboard.c (last_event_timestamp, kbd_buffer_get_event): Likewise.
(button_down_time, make_lispy_position, make_lispy_movement): Likewise.
* keyboard.h (last_event_timestamp): Likewise.
* menu.c (Fx_popup_menu) [!HAVE_X_WINDOWS]: Likewise.
* menu.h (xmenu_show): Likewise.
* term.c (term_mouse_position): Likewise.
* termhooks.h (struct input_event.timestamp): Likewise.
(struct terminal.mouse_position_hook): Likewise.
* xmenu.c (create_and_show_popup_menu, xmenu_show): Likewise.
* xterm.c (XTmouse_position, x_scroll_bar_report_motion): Likewise.
* systime.h (Time): New decl.  Pull it in from <X11/X.h> if
HAVE_X_WINDOWS, otherwise define it as unsigned long, which is
what it was before.
* menu.h, termhooks.h: Include "systime.h", for Time.
2011-05-12 13:23:33 -07:00
Glenn Morris
d2fc7e3d0f Merge from emacs-23; up to 2010-06-10T12:56:11Z!michael.albinus@gmx.de. 2011-05-12 00:07:06 -07:00
Paul Eggert
5235bd3eb1 * xterm.c: Use EMACS_INT for Emacs modifiers, and int for X modifiers.
Before, the code was not consistent.  These values cannot exceed
2**31 - 1 so there's no need to make them unsigned.
(x_x_to_emacs_modifiers): Accept int and return EMACS_INT.
(x_emacs_to_x_modifiers): Accept EMACS_INT and return int.
(x_x_to_emacs_modifiers, x_emacs_to_x_modifiers): Reject non-integers
as modifiers.
* xterm.h (x_x_to_emacs_modifiers): Adjust to signature change.
2011-05-11 16:16:52 -07:00
YAMAMOTO Mitsuharu
7db47798f8 Take account of fringe background extension in scroll_run_hook.
* w32term.c (w32_draw_fringe_bitmap): Rename local vars `left' and
`width' to `bar_area_x' and `bar_area_width', respectively.
(x_scroll_run): Take account of fringe background extension.

* xterm.c (x_draw_fringe_bitmap) [USE_TOOLKIT_SCROLL_BARS]: Rename
local vars `left' and `width' to `bar_area_x' and
`bar_area_width', respectively.
(x_scroll_run) [USE_TOOLKIT_SCROLL_BARS]: Take account of fringe
background extension.
2011-05-11 12:13:58 +09:00
Jan Djärv
abe95abbaf * xterm.c (x_set_frame_alpha): Do not set property on anything
else than FRAME_X_OUTER_WINDOW.

Fixes: debbugs:8608
2011-05-03 17:54:54 +02:00
Chong Yidong
4581706e27 Minor redisplay cleanups.
* src/dispextern.h (FACE_SUITABLE_FOR_ASCII_CHAR_P): Add missing
definition for no-X builds.

* src/termhooks.h (FRAME_WINDOW_P): Remove duplicated definitions.

* src/xdisp.c (get_next_display_element): Remove unnecessary ifdefs.
2011-04-17 14:40:55 -04:00