Commit graph

39437 commits

Author SHA1 Message Date
Paul Eggert
bc4d618552 Check list object type if --enable-gcc-warnings
* configure.ac (--enable-check-lisp-object-type):
Default to "yes" if --enable-gcc-warnings is not "no".
* etc/NEWS: Mention this.
* src/eval.c (internal_lisp_condition_case): Fix some glitches
with 'volatile' uncovered by the above: in particular, 'clauses'
should be a pointer to volatile storage on the stack, and need not
be volatile itself.  Use an int, not ptrdiff_t, to count clauses.
Don’t bother gathering binding count if VAR is nil.  Use
more-specific local names to try to clarify what’s going on.
2017-05-02 15:02:15 -07:00
Charles A. Roelli
6e0cac4896 Constrain non-child frames to screen area in OS X
* src/nsterm.m (constrainFrameRect:toScreen:): Constrain non-child
frames in OS X, if they would otherwise go offscreen.

Fixes: debbugs:25818
2017-05-02 21:28:42 +01:00
Eli Zaretskii
5f75304f61 Avoid compilation warnings
* src/w32fns.c (Fx_file_dialog, w32_parse_and_hook_hot_key):
* src/w32term.c (x_draw_glyph_string):
* src/w32fns.c (compute_tip_xy):
* src/w32font.c (w32font_text_extents):
* src/w32menu.c (set_frame_menubar):
* src/search.c (Freplace_match): Avoid compiler warnings in
optimized builds.
2017-05-02 11:04:33 +03:00
Paul Eggert
634d0a907f Merge from gnulib
This incorporates:
2017-05-01 New module 'localtime-buffer'
2017-04-30 utimens: Add support for native Windows
* admin/merge-gnulib (AVOIDED_MODULES): Add tzset.
* configure.ac (tzset): No need for Emacs itself to check now.
* lib/gettimeofday.c, lib/time.in.h, lib/time_rz.c, lib/utimens.c:
* m4/gettimeofday.m4, m4/time_h.m4, m4/time_rz.m4: Copy from gnulib.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* lib/localtime-buffer.c, lib/localtime-buffer.h:
* m4/localtime-buffer.m4: New files, copied from gnulib.
* src/editfns.c (init_editfns): Assume tzset is callable.
2017-05-01 15:33:26 -07:00
Philipp Stephani
c2bbdc3316 Warn about missing backslashes during load
* src/lread.c (load_warn_unescaped_character_literals, Fload, read1)
(syms_of_lread): Warn if unescaped character literals are
found (Bug#20152).
* lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Check for
unescaped character literals during byte compilation.
* test/src/lread-tests.el (lread-tests--unescaped-char-literals): New
unit test.
(lread-tests--with-temp-file, lread-tests--last-message): Helper
functions for unit test.
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--unescaped-char-literals): New unit test.
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--with-temp-file):
Helper macro for unit test.
2017-05-01 20:39:10 +02:00
Martin Rudalics
6c9ec085e2 Rewrite w32fns.c's `x_set_menu_bar_lines'
* src/w32fns.c (x_set_menu_bar_lines): Redraw frame immediately
regardless of whether menu bar is added or removed.  Clear
under internal border iff a W32 window exists.  Store either 0
or 1 as new parameter value.
(x_change_tool_bar_height): Use FRAME_W32_WINDOW instead of
FRAME_X_WINDOW.
2017-05-01 12:24:56 +02:00
Martin Rudalics
0943cc18b1 Fix `delete-frame' behavior including Bug#26682
* src/frame.c (other_frames): Accept two arguments now.  Don't
care about minibuffer window.  Don't care about visibility when
called from delete_frame with FORCE true (Bug#26682).
(delete_frame, Fmake_frame_invisible): Adjust other_frames
calls.
* src/w32term.c (w32_read_socket): Don't add a move frame event
for an invisible frame.
* lisp/frame.el (handle-delete-frame): Don't kill Emacs when
attempting to delete a surrogate minibuffer frame.
2017-04-30 10:02:53 +02:00
Glenn Morris
cee4128135 Merge from origin/emacs-25
784602b105 (origin/emacs-25) ; Add release notice
3a34412caa (tag: emacs-25.2) Set Emacs version to 25.2 and update AU...
56a4461a48 ; Move stray item from admin/notes/repo to CONTRIBUTE
2b0d111819 ; CONTRIBUTE: Remove stray header.
f2ab09ec60 Fix a typo in indexing the user manual
bc55a57423 * lisp/menu-bar.el (kill-this-buffer): Doc fix.  (Bug#26466)
a6d50401b4 Document 'line-pixel-height'
0c55cf43e6 * search.c (Fre_search_forward, Fre_search_backward): Imp...
c7ed57eaef Mention that processes start in default-directory (Bug#18...
856ec9ffa1 * src/xdisp.c (vmessage, message): Clarify commentary.
849a0aaa1c Belated fixes for admin.el's M-x make-manuals-dist
84938d7969 default-directory: Remark that it must be a directory name
3f0d047d2e Delete confuse statement in manual
ee1bd94dd0 Improve packaging documentation
fb18bff91f Expand manual section on quitting windows
9a73707964 Fix docstring of dabbrev-abbrev-char-regexp
afe8849bac * doc/misc/cl.texi (Iteration Clauses): Clarify example (...
ada79442c0 ;* doc/misc/info.texi (Choose menu subtopic): Improve ind...
d38fd9229c Narrow scope of modification hook renabling in org-src fo...
e0e9db4c84 ; Spelling fix

# Conflicts:
#	README
#	etc/AUTHORS
#	etc/HISTORY
#	lisp/ldefs-boot.el
2017-04-27 22:03:56 -07:00
Martin Rudalics
79c5ea9911 Fix doc and customization type of `window-combination-limit' (Bug#26673)
* src/window.c (Vwindow_combination_limit): Fix doc-string.
* lisp/cus-start.el (window-combination-limit): Fix
customization type.
* doc/lispref/windows.texi (Recombining Windows): Fix
documentation of `window-combination-limit'.
2017-04-27 10:18:48 +02:00
Alan Third
2058ed65fb Fix macOS version check (bug#26664)
* src/nsterm.m (initFrameFromEmacs): Prevent window tabbing mode on
macOS versions 10.12+.
2017-04-26 20:04:42 +01:00
Martin Rudalics
7a4851e11b Try to fix latest fix of w32_mouse_position
* src/w32term.c (w32_mouse_position): Fix a bug introduced by
latest fix and try to make the affected code more rigorous.
2017-04-26 15:20:09 +02:00
Eli Zaretskii
b780f16953 Avoid segfaults when 'find-font' is invoked for a TTY frame
* src/font.c (font_pixel_size): Don't call GUI functions if F is a
text-mode frame.  (Bug#26646)
2017-04-26 15:09:12 +03:00
Glenn Morris
3a8388a7c6 * src/Makefile.in (leimdir): Remove variable, no longer used. 2017-04-25 20:43:05 -04:00
Glenn Morris
ea8605ae84 Generate leim-list via lisp/Makefile, not src/Makefile
* src/Makefile.in ($(leimdir)/leim-list.el): Remove rule.
(emacs$(EXEEXT)): Don't depend on leim-list.
* lisp/Makefile.in ($(lisp)/loaddefs.el): Depend on gen-lisp again.
2017-04-25 19:30:31 -04:00
Alan Third
f0424b1315 Fix define for GNUstep builds
* src/nsterm.m (initFrameFromEmacs): Fix the ifdef so that GNUstep
doesn't see the code.
2017-04-25 21:47:27 +01:00
Alan Third
603f634c8f Fix some NS frame handling issues
* src/nsterm.m (FRAME_DECORATED_FLAGS, FRAME_UNDECORATED_FLAGS): New
defines intended to make things tidier.
(x_set_undecorated): Use the new defines.
(windowWillResize): Don't use new macOS 12+ only feature.
(initFrameFromEmacs): Use the new defines, and disable automatic
window tabbing feature in macOS 12.
(x_set_undecorated, x_set_parent_frame, x_set_no_accept_focus,
x_set_z_group): Add NSTRACE notices.
2017-04-25 21:06:12 +01:00
Alan Third
53f8f4bf2d Fix XBM colour rendering in NS port (bug#22060)
src/nsimage.m (setXBMColor): Fix calculation of xbm_fg.
2017-04-24 10:26:20 +01:00
Martin Rudalics
a02885a370 Let w32_mouse_position pick a child window only if it has a child frame
* src/w32term.c (w32_mouse_position): When using a frame found
by ChildWindowFromPoint make sure it's a child frame (Bug#26615,
maybe).
2017-04-23 10:52:56 +02:00
Philipp Stephani
eb52828a43 Fix usage of FRAME_Z_GROUP
* src/nsterm.m (initFrameFromEmacs:): FRAME_Z_GROUP does not return a
Lisp object, cf. Bug#26597.
2017-04-22 13:54:08 +02:00
Alan Third
401e41df0c Fix GNUstep build
* src/nsfns.m (Fns_frame_z_list_order): Rewrite for GNUstep
compatibility.
* src/nsmenu.m (update_frame_tool_bar): Remove unused variable.
2017-04-22 10:42:35 +01:00
Alan Third
d812d20fbc Add no-accept-focus and frame-list-z-order to NS port
* lisp/frame.el (frame-list-z-order): Add NS.
* src/nsfns.m: Add x_set_no_accept_focus to handler struct.
(Fx_create_frame): Handle no-accept-focus parameter.
(ns_window_is_ancestor):
(Fns_frame_list_z_order): New functions.
* src/nsterm.m (x_set_no_accept_focus): New function.
(initFrameFromEmacs): Use EmacsWindow instead of EmacsFSWindow for
non-fullscreen windows.
(EmacsWindow:canBecomeKeyWindow): New function.
2017-04-21 20:44:35 +01:00
Eli Zaretskii
72d7961d67 Avoid infinite loop in redisplay when header-line-format is invalid
* src/xdisp.c (handle_invisible_prop): Avoid inflooping when the
string has an invalid %-construct in it and is displayed as part
of mode-line or header-line.  (Bug#26586)
2017-04-21 11:10:14 +03:00
Alan Third
21fa90b048 Fix bug introduced by my last commit
* src/nsterm.m (ns_draw_fringe_bitmap): Revert key-mashing accident.
2017-04-19 17:58:49 +01:00
Alan Third
aca21d42d3 Add new frame functionality to NS port
* lisp/frame.el (frame-restack): Call ns-frame-restack.
* src/keyboard.c (kbd_buffer_get_event) [HAVE_NS]: Enable
MOVE_FRAME_EVENT handling.
* src/frame.h:
* src/frame.c: Enable 'z-group', 'undecorated' and 'parent' frame
definitions.
* src/nsfns.m: Add x_set_z_group, x_set_parent_frame and
x_set_undecorated (Cocoa only) to handler struct.
(Fx_create_frame): Handle 'z-group', 'parent-frame' and 'undecorated'
frame parameter.
(Fns_frame_restack): New function.
* src/nsmenu.m (free_frame_tool_bar, update_frame_tool_bar):
FRAME_TOOLBAR_HEIGHT is no longer a variable.
* src/nsterm.h (NS_PARENT_WINDOW_LEFT_POS, NS_PARENT_WINDOW_TOP_POS):
Add #defines to find the screen position of the parent frame.
(NS_TOP_POS): Remove defun.
(EmacsView): Remove redundant toolbar variables and add createToolbar
method.
(FRAME_NS_TITLEBAR_HEIGHT, FRAME_TOOLBAR_HEIGHT): Always calculate the
values instead of storing them in a variable.
* src/nsterm.m (x_set_offset, windowDidMove): Take parent frame
position into account when positioning frames.
(initFrameFromEmacs): Remove toolbar creation code and handle new
frame parameters.
(x_set_window_size): Remove toolbar height calculation.
(x_set_z_group):
(x_set_parent_frame):
(x_set_undecorated) [NS_IMPL_COCOA]: New function.
(x_destroy_window): Detach parent if child closes.
(updateFrameSize): Change NSTRACE message to reflect new reality and
no longer reset frame size.
(windowWillResize): Don’t change NS window name when the titlebar
is invisible.
(createToolbar): Move toolbar creation code into it’s own method.
(toggleFullScreen): FRAME_TOOLBAR_HEIGHT and FRAME_NS_TITLEBAR_HEIGHT
are no longer variables.
(windowDidMove): Fire MOVE_FRAME_EVENT Emacs event.
2017-04-19 17:17:35 +01:00
Alan Third
a13eaddce2 Use vfork if possible on Darwin (bug#26397)
Co-authored-by: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>

* src/conf_post.h (HAVE_WORKING_VFORK): Don't undef.
(vfork): Don't define.
* src/process.c (create_process) [DARWIN_OS]: Use fork if pty_flag is
set, otherwise vfork.
* src/callproc.c (call_process) [DARWIN_OS]: Use TIOCNOTTY to detach
the controlling terminal instead of setsid.
2017-04-18 11:42:30 +01:00
Paul Eggert
d5ead735a0 ; Spelling fix 2017-04-17 11:22:52 -07:00
Paul Eggert
b8e0d203fe * src/xterm.c (x_fill_rectangle): Now static. 2017-04-17 11:14:40 -07:00
Paul Eggert
932698b789 Tighten recently-added UTF-8 check
* src/coding.c (encode_coding_utf_8): Now extern.
* src/terminal.c (terminal_glyph_code) [HAVE_STRUCT_UNIPAIR_UNICODE]:
Check for UTF-8, not just for multibyte.
2017-04-17 10:20:39 -07:00
Paul Eggert
630df0587e * src/lisp.h (STRING_SET_CHARS): Simplify assertion. 2017-04-17 07:56:29 -07:00
Eli Zaretskii
edc63bf94f Fix assertion violations when displaying thread-related error
* src/process.c (Faccept_process_output): Don't assume a thread's
name is always a string.
2017-04-17 09:47:39 +03:00
Paul Eggert
750721c394 Remove unused coding enums
* src/coding.h (enum coding_system_type, enum end_of_line_type):
Remove; unused.
2017-04-16 23:07:55 -07:00
Paul Eggert
1cad610301 Work around bug with unibyte Linux consoles
* src/terminal.c (terminal_glyph_code): Skip the UTF-8 stuff if
the terminal's coding system is unibyte (Bug#26396).
2017-04-16 22:50:39 -07:00
Eli Zaretskii
58430f2996 Fix redisplay performance problems with some fonts
* src/font.c (font_list_entities): Revert part of the changes
introduced on Apr 2, 2014 to fix bug#17125.  It turns out having
zero_vector in the font-cache is an important indication that
cannot be removed.  (Bug#21028)
2017-04-16 10:43:22 +03:00
Eli Zaretskii
f3b24e90dc Add assertion to STRING_SET_CHARS
* src/lisp.h (STRING_SET_CHARS): Add an assertion and commentary
to prevent incorrect usage.  For details, see this discussion:
http://lists.gnu.org/archive/html/emacs-devel/2017-04/msg00412.html.
2017-04-16 10:27:23 +03:00
Eli Zaretskii
1bf7ca623b Avoid compilation warnings on MS-Windows
* src/w32term.c (w32_read_socket): Avoid compiler warnings about
parentheses around assignment.
* src/w32fns.c (w32_createwindow): Remove unused variable
dwStyle.  Use "|=" where appropriate.
2017-04-16 10:12:42 +03:00
Paul Eggert
e6750596ef ; Spelling and minor wording fixes 2017-04-14 12:42:31 -07:00
Martin Rudalics
fc05d4fec9 Fix segfault when calling frame_ancestor_p (Bug#26493)
* src/xterm.c (handle_one_xevent): Check that hf was not reset
before calling frame_ancestor_p (Bug#26493).
2017-04-14 12:14:09 +02:00
Glenn Morris
ad128fee43 Create generated lisp files before main loaddefs.el
This should improve reproducibility of lisp/loaddefs.el.
* lisp/Makefile.in (gen-lisp): New phony target.
($(lisp)/loaddefs.el, compile-main): Depend on gen-lisp.
* src/Makefile.in ($(leimdir)/leim-list.el): Depend on all of ../leim.
* lisp/cedet/semantic.el (semantic-mode):
* lisp/cedet/semantic/fw.el (top-level):
* lisp/emacs-lisp/eieio-core.el (top-level):
Robustify to generated input files maybe not yet existing.
2017-04-13 20:12:02 -04:00
Glenn Morris
dbae41896c Small src/Makefile simplification
* src/Makefile.in ($(lispsource)/international/ucs-normalize.elc)
($(lispsource)/term/ns-win.elc): Combine rules.
2017-04-13 13:44:35 -04:00
Martin Rudalics
c25005eda1 New internal-border face and args for select-window and x-focus-frame
Add `internal-border' face and handle it whenever clearing the
internal border.  If NORECORD equals the symbol
'mark-for-redisplay', `select-window' will not record the window
but still mark it for redisplay.  The new argument NOACTIVATE
for `x-focus-frame' tries to not activate FRAME when set.

* lisp/faces.el (internal-border): New face.
* lisp/mwheel.el (mwheel-scroll): Select window to scroll with
`mark-for-redisplay'.
* lisp/scroll-bar.el (scroll-bar-drag)
(scroll-bar-horizontal-drag, scroll-bar-scroll-down)
(scroll-bar-scroll-up, scroll-bar-toolkit-scroll)
(scroll-bar-toolkit-horizontal-scroll): Select window to scroll
with `mark-for-redisplay'.
* lisp/window.el (handle-select-window): When
`focus-follows-mouse' is not 'auto-raise' try to not activate
FRAME.
* src/dispextern.h (face_id): Add INTERNAL_BORDER_FACE_ID.
* src/frame.c (Fx_focus_frame): New argument NOACTIVATE.
* src/frame.h (x_focus_frame): Update extern declaration.
* src/gtkutil.c (xg_clear_under_internal_border): Remove
function.
(xg_frame_resized, xg_frame_set_char_size): Call
x_clear_under_internal_border.
(xg_tool_bar_callback): Adapt x_focus_frame call.
* src/gtkutil.h (xg_clear_under_internal_border): Remove
declaration.
* src/nsfns.m (x_focus_frame): Add argument NOACTIVATE.
* src/w32fns.c (x_clear_under_internal_border): Fill border
with internal-border background if specified.
* src/w32term.h (x_clear_under_internal_border): Add extern
declaration.
* src/w32term.c (x_after_update_window_line): Fill border
with internal-border background if specified.
(w32_set_vertical_scroll_bar, w32_set_horizontal_scroll_bar)
(x_scroll_bar_clear, w32_read_socket): Call
x_clear_under_internal_border.
(x_focus_frame): New argument NOACTIVATE.
* src/window.c (select_window): Mark WINDOW for redisplay when
NORECORD equals 'mark-for-redisplay'.
(Fselect_window): Update doc-string.
(syms_of_window): Define Qmark_for_redisplay.
* src/xdisp.c (clear_garbaged_frames, echo_area_display)
(redisplay_internal): Call x_clear_under_internal_border.
* src/xfaces.c (lookup_basic_face): Handle `window-divider'
and `internal-border' faces.
(realize_basic_faces): Realize `internal-border' face.
(syms_of_xfaces): Define Qinternal_border.
* src/xfns.c (x_set_internal_border_width): Remove call for
xg_clear_under_internal_border.
(x_focus_frame): New argument NOACTIVATE.  When non-nil try to not
activate frame.
* src/xterm.c (x_fill_rectangle): No more static.
(x_clear_under_internal_border, x_after_update_window_line):
Fill border with internal-border background if specified.
(xt_horizontal_action_hook): Rewrite.
(handle_one_xevent): Call x_clear_under_internal_border.
* src/xterm.h (x_fill_rectangle): Add extern declaration.
2017-04-12 18:22:44 +02:00
Paul Eggert
8720f601e7 Port recent frame changes to --enable-gcc-warnings
* src/frame.c (next_frame, prev_frame):
Remove now-redundant assertions.
* src/frame.h (FOR_EACH_FRAME): Assume Vframe_list is nonempty.
2017-04-12 07:27:53 -07:00
Martin Rudalics
3fdd3bb56c Add new frame parameters and associated functions
Add new frame parameters `undecorated', `override-redirect',
`parent-frame', `skip-taskbar', `no-focus-on-map',
`no-accept-focus', `z-group', `delete-before', `no-other-frame',
`mouse-wheel-frame', `min-width', `min-height'.  Add new
functions `frame-restack' and `frame-list-z-order'.

* lisp/cus-start.el (focus-follows-mouse): Adapt customization
type.
* lisp/frame.el (handle-delete-frame): Handle child and
`delete-before' frames.
(other-frame): Stop looking for other frame after one round.
(frame-list-z-order, frame-restack): New functions.
(delete-other-frames): Handle child frames.
* lisp/frameset.el (frameset-persistent-filter-alist)
(frameset--record-relationships): Handle `delete-before',
`parent-frame' and `mouse-wheel-frame' parameters.  Rename
latter from `frameset--record-minibuffer-relationships'.
(frameset--restore-frame): Handle ‘parent-frame’ parameter
specially.
(frameset-restore): Handle `delete-before', `parent-frame' and
`mouse-wheel-frame' parameters.
* lisp/mwheel.el (mwheel-scroll): Handle `mouse-wheel-frame'
parameter.
* lisp/window.el (window--min-size-ignore-p): Fix doc-string.
(mouse-autoselect-window-select, handle-select-window): Major
rewrite.  Try to not ignore errors.  Handle auto-selection of
child frames and different values of `focus-follows-mouse'.
* src/frame.c (frame_windows_min_size): Handle new `min-width'
and `min-height' frame parameters.
(make_frame): Initialize new frame structure members.
(do_switch_frame): Don't reset internal_last_event_frame for
descendant frames.
(Fframe_parent, frame_ancestor_p, Fframe_ancestor_p): New
functions.
(candidate_frame): Don't return `no-other-frame' frame.
(other_frames): New function replacing other_visible_frames.
(delete_frame): Rewrite.  Handle child and `delete-before' frames.
(Fmake_frame_invisible): Call other_frames.
(store_frame_param): Check `delete-before' and `parent-frame'
parameters for circular dependencies.
(frame_parms, syms_of_frame): Add entries for and define new
frame parameters.
(focus_follows_mouse): New meaningful value `auto-raise'.
* src/frame.h (z_group): New enumeration type.
(frame): New slots parent_frame, undecorated, override_redirect,
skip_taskbar, no_focus_on_map, no_accept_focus, z_group.
(fset_parent_frame): New inlined function.
(FRAME_UNDECORATED, FRAME_OVERRIDE_REDIRECT)
(FRAME_PARENT_FRAME, FRAME_SKIP_TASKBAR, FRAME_NO_FOCUS_ON_MAP)
(FRAME_NO_ACCEPT_FOCUS, FRAME_Z_GROUP, FRAME_Z_GROUP_NONE)
(FRAME_Z_GROUP_ABOVE, FRAME_Z_GROUP_ABOVE_SUSPENDED)
(FRAME_Z_GROUP_BELOW): New macros.
(frame_ancestor_p): Add declaration.
* src/gtkutil.c (xg_create_frame_widgets): Handle
`undecorated' and `override-redirect' frame parameters.
(x_wm_set_size_hint): None for child frames.
(xg_set_undecorated, xg_frame_restack, xg_set_skip_taskbar)
(xg_set_no_focus_on_map, xg_set_no_accept_focus)
(xg_set_override_redirect): New functions.
(xg_update_scrollbar_pos, xg_update_horizontal_scrollbar_pos):
Don't let scrollbars obscure child frames.
* src/gtkutil.h: (xg_set_undecorated, xg_frame_restack)
(xg_set_skip_taskbar, xg_set_no_focus_on_map)
(xg_set_no_accept_focus, xg_set_override_redirect): Add extern
declarations.
* src/nsfns.m (ns_frame_parm_handlers): Add entries for new
frame parameters.
(Fx_create_frame): Install `min-width' and `min-height' frame
parameters.
* src/nsterm.m (mouseMoved:): Handle focus_follows_mouse change.
* src/w32fns.c (WS_EX_NOACTIVATE): Define if necessary.
(x_real_positions): Handle child frames.
(x_set_menu_bar_lines): Don't for child frames.
(x_set_undecorated, x_set_parent_frame, x_set_skip_taskbar)
(x_set_no_focus_on_map, x_set_no_accept_focus)
(x_set_z_group): New functions.
(w32_createvscrollbar, w32_createhscrollbar): Don't draw
scroll bars over child frames.
(w32_createwindow): Handle new frame parameters and child frames.
(w32_wnd_proc): Let mouse clicks into a child frame activate
the frame.  Try to handle the `no-accept-focus' parameter.  Do
SetFocus when our window is brought to top or becomes the
foreground window.
(w32_window): Don't initialize menu bar for child frames.
(Fx_create_frame): Handle new frame parameters.
(x_create_tip_frame): Set explicit_parent slot.
(w32_dialog_in_progress): New function.
(Fx_file_dialog): Handle `z-group-above' frames.
(w32_frame_list_z_order, Fw32_frame_list_z_order)
(w32_frame_restack, Fw32_frame_restack): New functions.
(w32_frame_parm_handlers): Add entries for new frame
parameters.
* src/w32font.c (Fx_select_font): Handle `z-group-above'
frames during font selection dialogue.
* src/w32term.c (construct_mouse_wheel): Construct mouse wheel
event from F's w32 window.
(w32_mouse_position): Handle child frames.
(w32_set_vertical_scroll_bar, w32_set_horizontal_scroll_bar):
Don't draw scroll bars over child frames.
(w32_read_socket): Always erase background of child frames.
When generating SELECT_WINDOW_EVENTs handle new value of
`focus-follows-mouse' and handle `no-accept-focus' parameter.
Handle `mouse-wheel-frame' parameter.
(x_calc_absolute_position, x_set_offset, x_set_window_size):
Handle child frames.
(x_make_frame_visible): Handle child frames specially.  Handle
`no-focus-on-map' parameter.
* src/w32term.h (w32_dialog_in_progress): Add external
declaration.
* src/xdisp.c (x_consider_frame_title, prepare_menu_bars): Not
for child frames.
* src/xfns.c (Xm/MwmUtil.h): Include for WM hints.
(PropMotifWmHints, PROP_MOTIF_WM_HINTS_ELEMENTS): Define for
non-Motif, non-GTK case.
(x_real_pos_and_offsets): Handle child frames.
(x_set_undecorated, x_set_parent_frame)
(x_set_no_focus_on_map, x_set_no_accept_focus)
(x_set_override_redirect): New functions.
(x_set_menu_bar_lines): Not for child frames.
(x_window): Handle `undecorated' and `override_redirect' cases.
(Fx_create_frame): Handle new frame parameters.
(frame_geometry): Handle child frames and outer border.
(x_frame_list_z_order, Fx_frame_list_z_order)
(x_frame_restack, Fx_frame_restack): New functions.
(Fx_file_dialog, Fx_select_font): Set x_menu_set_in_use.
(x_frame_parm_handlers): Add entries for new frame parameters.
* src/xmenu.c (x_menu_set_in_use): Handle `z-group-above'
frames.
* src/xterm.c (x_set_frame_alpha): Don't set alpha of parent
for child frames.
(XTmouse_position): Handle child frames.
(x_scroll_bar_create, x_scroll_bar_expose): Don't let scroll
bars obscure child frames.
(handle_one_xevent): Handle child frame positions.  If necessary
set `skip-taskbar' and reassign proper `z-group' when we are
mapped.  When generating SELECT_WINDOW_EVENTs handle new value
of `focus-follows-mouse'.  Handle `mouse-wheel-frame' parameter.
Let mouse clicks into a child frame activate the frame.
(x_calc_absolute_position, x_set_offset): Handle child frames
specially.
(x_set_skip_taskbar, x_set_z_group): New functions.
(x_make_frame_visible): Handle child frames.
(ATOM_REFS_INIT): Add entries for
Xatom_net_wm_state_skip_taskbar, Xatom_net_wm_state_above,
Xatom_net_wm_state_below.
* src/xterm.h (top-level): Declare Xatom_net_wm_state_above,
Xatom_net_wm_state_below and Xatom_net_wm_state_skip_taskbar.
(x_set_skip_taskbar, x_set_z_group): Add extern declarations.
2017-04-12 10:38:25 +02:00
Martin Rudalics
ea6c880aa6 Frame movement, focus and hook related changes
New hook `move-frame-functions'.  Run `focus-in-hook'
after switching to frame that gets focus.  Don't run
XMoveWindow for GTK.

* lisp/frame.el (handle-move-frame, frame-size-changed-p): New
functions.

* src/frame.c (do_switch_frame): Simplify code.
(Fhandle_switch_frame): Switch frame before running
`handle-focus-in'.
(Vfocus_in_hook, Vfocus_out_hook): Clarify doc-strings.
(Vmove_frame_functions): New hook variable.
* src/keyboard.c (kbd_buffer_get_event): Handle
MOVE_FRAME_EVENT.  Handle SELECT_WINDOW_EVENT separately.
(head_table): Add Qmove_frame entry.
(syms_of_keyboard): Add Qmove_frame.
(keys_of_keyboard): Define key for `move-frame'.
* src/termhooks.h (event_kind): Add MOVE_FRAME_EVENT.
* src/w32term.c (w32_read_socket): Create MOVE_FRAME_EVENT.
* src/window.c (run_window_size_change_functions): Record size of
FRAME's minibuffer window too.
* src/xterm.c (handle_one_xevent): Create MOVE_FRAME_EVENT.
(x_set_offset): For GTK call gtk_widget_move instead of
XMoveWindow.
2017-04-11 12:37:26 +02:00
Werner LEMBERG
0eef8e9af7 Avoid abort in ftfont.c due to faulty fonts
* src/ftfont.c (ftfont_get_metrics): Try loading the font without
hinting, before aborting.  (Bug#25945)
2017-04-11 13:06:30 +03:00
Martin Rudalics
291b76f91e Set x_gtk_use_window_move by default for fixing bug#25851 and bug#25943
This activates a change that was installed a few weeks ago but whose
ChangeLog was inadvertently dropped during its commit.  The proper
ChangeLog is included below as part of the present commit.

* src/gtkutil.c (xg_set_geometry): When x_gtk_use_window_move
is set avoid calling x_gtk_parse_geometry (Bug#25851).
(x_wm_set_size_hint): When x_gtk_use_window_move is set, set
PPosition, USPosition and USSize flags if requested.
* src/xterm.c (x_set_offset): With GTK when
x_gtk_use_window_move is set, leave it entirely to
gtk_window_move to position the window and skip any
post-adjustments (Bug#25851 and Bug#25943).
(x_gtk_use_window_move): New variable.
2017-04-11 08:29:41 +02:00
Lars Brinkhoff
3ccd0ff106 Add PVSIZE function to return the size of a pseudovector.
* src/lisp.h (PVSIZE): New function.

* src/chartab.c (copy_char_table):
* src/data.c (Ftype_of, Finteractive_form, Faref, Faset):
* src/doc.c (Fdocumentation, store_function_docstring):
* src/eval.c (Fcommandp, funcall_lambda, lambda_arity, Ffetch_bytecode):
* src/fns.c (Flength, Fcopy_sequence):
* src/font.h (FONT_SPEC_P, FONT_ENTITY_P, FONT_OBJECT_P):
* src/lread.c (substitute_object_recurse):
* src/src/print.c (print_object):
  Use it.
2017-04-10 20:35:13 +02:00
Lars Brinkhoff
4fbfd7ad53 Fix circular read syntax for records.
* lread.c (substitute_object_recurse): Work with records.

* lread-tests.el (lread-record-1): New test.
2017-04-08 08:47:46 +02:00
Paul Eggert
a2b3fea957 Deprecate copy-record in favor of copy-sequence
Since copy-sequence seems to be needed anyway for records, have it
work on records, and remove copy-record as being superfluous.
* doc/lispref/records.texi (Records, Record Functions):
* lisp/emacs-lisp/cl-macs.el (cl-defstruct):
* lisp/emacs-lisp/eieio.el (make-instance, clone):
* test/src/alloc-tests.el (record-3):
Use copy-sequence, not copy-record, to copy records.
* doc/lispref/sequences.texi (Sequence Functions)
(Array Functions): Document that aref and copy-sequence
work on records.
* etc/NEWS: Omit copy-record.
* src/alloc.c (Fcopy_record): Remove.
* src/data.c (Faref): Document that arg can be a record.
* src/fns.c (Fcopy_sequence): Copy records, too.
2017-04-07 18:54:40 -07:00
Paul Eggert
a614cd416c Fix dependency checking in src/Makefile.in
* src/Makefile.in (AUTO_DEPEND, DEPDIR, DEPFLAGS): Move includes of
dependency files until after ALLOBJS is defined, since it uses ALLOBJS.
Otherwise, some dependencies will be missed.
2017-04-07 18:54:40 -07:00
Paul Eggert
6fbbfc77d4 Minor tuneup of write-region change
* src/fileio.c (write_region): Use SCHARS, not Flength,
on a value known to be a string.
2017-04-07 18:54:39 -07:00