1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-12 01:42:37 -07:00
Commit graph

13412 commits

Author SHA1 Message Date
Eli Zaretskii
29b79ba197 Fix vertical cursor motion when there are overlay strings at EOL.
src/indent.c (Fvertical_motion): Don't consider display strings on
 overlay strings as display strings on the buffer position we
 started from.  This prevents vertical cursor motion from jumping
 more than one line when there's an overlay string with a display
 property at end of line.
 Reported by Karl Chen <Karl.Chen@quarl.org> in
 http://lists.gnu.org/archive/html/emacs-devel/2013-04/msg00362.html.
2013-04-13 11:54:02 +03:00
Stefan Monnier
562c6ee945 * src/window.c (select_window): `record_buffer' even if window is
already selected.

Fixes: debbugs:14191
2013-04-12 13:32:52 -04:00
Eli Zaretskii
fcc1fe8541 Fix bug #14170 with window-end returning a stale value.
This bug was introduced in 2012-10-15T09:03:56Z!rudalics@gmx.at
while solving bug #12600.

 src/window.c (Fwindow_end): Test more flags, including the buffer's
 last_overlay_modified flag, to determine whether the window's
 display is really up-to-date.  Prevents the function from
 returning a stale value.
 (Fwindow_line_height): Fix the test for up-to-date-ness of the
 current matrix.
2013-04-11 19:06:47 +03:00
Eli Zaretskii
f009190abc Fix bug #13864 with flickering of TTY frames in an emacslient session.
src/frame.c (do_switch_frame): Mark the TTY frame we switch to as
 garbaged only if it is not already the top frame on its TTY.  This
 prevents flickering due to constant redrawing of TTY frames when
 there are GUI frames open in the same session.
2013-04-10 18:38:20 +03:00
Stefan Monnier
78ce603d02 * src/keyboard.c (timer_start_idle): Call internal-timer-start-idle instead
of marking the idle timers directly.
* lisp/emacs-lisp/timer.el (timer--check): New function.
(timer--time, timer-set-function, timer-event-handler): Use it.
(timer-set-idle-time): Simplify.
(timer--activate): CSE.
(timer-event-handler): Give more info in error message.
(internal-timer-start-idle): New function, moved from C.
2013-04-10 09:31:35 -04:00
Stefan Monnier
a8036e4076 * src/minibuf.c (Ftest_completion): Ignore non-string/symbol keys in hash
tables.

Fixes: debbugs:14054
2013-04-09 16:10:47 -04:00
Stefan Monnier
7ffe7ef6ba * src/window.c (select_window): Don't record_buffer while the invariant is
temporarily broken.
* src/fns.c (Fdelq): Don't assume !NILP => CONSP.

Fixes: debbugs:14161
2013-04-08 14:04:58 -04:00
Eli Zaretskii
7d9f6883aa Provide definition of ACL_NOT_WELL_SUPPORTED for MS-Windows.
src/fileio.c (ACL_NOT_WELL_SUPPORTED): Define macro for WINDOWSNT.

Fixes: debbugs:13702
2013-04-07 19:18:41 +03:00
Romain Francoise
5406cfd9cd Ignore additional platform-specific ACL errors (Bug#13702).
* fileio.c (ACL_NOT_WELL_SUPPORTED): New macro copied from gnulib.
(Fcopy_file, Fset_file_acl) [HAVE_POSIX_ACL]: Use it.
2013-04-07 13:21:39 +02:00
Jan Djärv
95c0e83b2a * nsterm.m (ns_mouse_position): Use NS_FRAME_P instead of checking
f->output_data.ns.
2013-04-07 12:51:29 +02:00
Paul Eggert
876da980f8 Fix --enable-profiling bug introduced by 2013-02-25 change.
This bug was introduced by my 2013-02-25 change that simplified
data_start configuration.  Without this change, on GNU/Linux
an Emacs configured with --enable-profiling fails immediately
due to a profiler signal.
* configure.ac (LD_SWITCH_SYSTEM_TEMACS): Append -pg if profiling
and if not on GNU/Linux or FreeBSD.
* lib/Makefile.am (AM_CFLAGS): Add $(PROFILING_CFLAGS), so that
lib/*.o is profiled too.
* src/Makefile.in: Compile with $(PROFILING_CFLAGS), but do not link
with these flags.  On platforms where special flags are needed
when linking temacs, the flags are now in LD_SWITCH_SYSTEM_TEMACS.
(ALL_CFLAGS): Remove $(PROFILING_CFLAGS).
(.c.o, .m.o): Compile with $(PROFILING_CFLAGS).

Fixes: debbugs:13783
2013-04-06 23:21:40 -07:00
Dmitry Antipov
7452b7bd70 Get rid of some platform-specific functions examining window
system and its capabilities.  This is a partial rework of the
2013-04-05 change.
* lisp.h (have_menus_p): Remove prototype.  This function is
replaced with platform-independent window_system_available.
(check_window_system): Move to...
* frame.h (decode_window_system_frame, window_system_available):
...here, add new prototypes.
* frame.c (window_system_available, decode_window_system_frame):
New functions.
(check_window_system): Platform-independent now.
* xterm.h (x_in_use): Remove declaration.
(check_x_frame):
* w32term.h (check_x_frame):
* nsterm.h (check_x_frame): Remove prototypes.  This function
is replaced with platform-independent decode_window_system_frame.
* msdos.c (have_menus_p): Remove.
* nsfns.m (check_window_system, have_menus_p, check_ns_frame):
Remove platform-specific functions.  Use check_window_system,
decode_window_system_frame and check_ns_display_info where
appropriate.  Minor style and comment tweaks.
* w32fns.c (w32_in_use, check_window_system, have_menus_p)
(check_x_frame): Likewise.
* xfns.c (x_in_use, check_window_system, have_menus_p, check_x_frame):
Likewise.
* fileio.c, fns.c, font.c, fontset.c, image.c, menu.c, nsmenu.m:
* nsselect.m, nsterm.m, w32font.c, w32menu.c, xfaces.c, xgselect.c:
* xmenu.c, xselect.c: All related users changed.
2013-04-07 08:41:19 +04:00
Kenichi Handa
b7a6f9f791 merge trunk 2013-04-05 23:17:55 +09:00
Kenichi Handa
251e91474c Optimize the code for reading UTF-8 files. 2013-04-05 23:08:56 +09:00
Dmitry Antipov
73931ad14a Consistently use platform-specific function to detect window system.
* lisp.h (check_window_system): New prototype.  This function is
going to replace check_x, check_w32 and check_ns.
(have_menus_p): Mention msdos.c in comment.
* fontset.c (check_window_system_func): Remove.  Adjust all users.
* fontset.h (check_window_system_func): Remove prototype.
* nsterm.h (check_ns):
* xterm.h (check_x):
* w32term.h (check_w32): Likewise.
* menu.c (Fx_popup_menu): Use check_window_system.
* msdos.c (check_window_system): Define for MS-DOS.
* nsfns.m (check_window_system): Define for NS.  Adjust all users.
* w32fns.c (check_window_system): Likewise for MS-Windows.
* xfns.c (check_window_system): Likewise for X.
* font.c, frame.c, nsmenu.m, nsselect.m, nsterm.m, w32menu.c:
* xfaces.c, xmenu.c: Use check_window_system where appropriate.
2013-04-05 18:07:02 +04:00
Paul Eggert
7216e43b32 Prefer < to > in range checks such as 0 <= i && i < N.
This makes it easier to visualize quantities on a number line.
This patch doesn't apply to all such range checks,
only to the range checks affected by the 2013-03-24 change.
This patch reverts most of the 2013-03-24 change.
* alloc.c (xpalloc, Fgarbage_collect):
* ccl.c (ccl_driver, resolve_symbol_ccl_program):
* character.c (string_escape_byte8):
* charset.c (read_hex):
* data.c (cons_to_unsigned):
* dispnew.c (update_frame_1):
* doc.c (Fsubstitute_command_keys):
* doprnt.c (doprnt):
* editfns.c (hi_time, decode_time_components):
* fileio.c (file_offset):
* fns.c (larger_vector, make_hash_table, Fmake_hash_table):
* font.c (font_intern_prop):
* frame.c (x_set_alpha):
* gtkutil.c (get_utf8_string):
* indent.c (check_display_width):
* keymap.c (Fkey_description):
* lisp.h (FIXNUM_OVERFLOW_P, vcopy):
* lread.c (read1):
* minibuf.c (read_minibuf_noninteractive):
* process.c (wait_reading_process_output):
* search.c (Freplace_match):
* window.c (get_phys_cursor_glyph):
* xdisp.c (redisplay_internal):
* xsmfns.c (smc_save_yourself_CB):
Prefer < to > for range checks.
* dispnew.c (sit_for): Don't mishandle NaNs.
This fixes a bug introduced in the 2013-03-24 change.
* editfns.c (decode_time_components): Don't hoist comparison.
This fixes another bug introduced in the 2013-03-24 change.
2013-04-01 18:54:56 -07:00
Dmitry Antipov
9275998872 * frame.h (struct frame): Drop scroll_bottom_vpos
member becaue all real users are dead long ago.
(FRAME_SCROLL_BOTTOM_VPOS): Remove.
* xdisp.c (redisplay_internal): Adjust user.
2013-03-31 09:45:54 +04:00
Glenn Morris
9a1971bbaa ChangeLog whitespace fix 2013-03-30 09:57:02 -07:00
Jan Djärv
f38ab1671f * nsmenu.m (showAtX:Y:for:): setLevel to
NSPopUpMenuWindowLevel (Bug#13998).
2013-03-30 11:18:48 +01:00
Jan Djärv
6d01f1feaf * nsmenu.m (ns_update_menubar): Correct NSTRACE.
(x_activate_menubar): Update the menu with title that matches
ns_get_pending_menu_title, and call
ns_check_pending_openmenu.
(menuWillOpen:): New method.
(menuNeedsUpdate:): Add check for ! COCOA || OSX < 10.5 (Bug#12698).

* nsterm.h (ns_get_pending_menu_title, ns_check_menu_open)
(ns_check_pending_open_menu): Declare.

* nsterm.m (menu_will_open_state, menu_mouse_point)
(menu_pending_title): New varaibles.
(ns_get_pending_menu_title, ns_check_menu_open)
(ns_check_pending_open_menu): New functions.
2013-03-30 10:57:27 +01:00
Dmitry Antipov
781f4782a7 * indent.c (current_column_bol_cache): Remove leftover which is not
used in Fmove_to_column any more.
(current_column, scan_for_column): Adjust users.
* keyboard.c (last_point_position_buffer, last_point_position_window):
Remove leftovers which are not used for recording undo any more.
(command_loop_1, syms_of_keyboard): Adjust users.
* xdisp.c (last_max_ascent): Remove leftover which is not used in
redisplay_window any more.
(move_it_to): Adjust user.
2013-03-29 19:50:21 +04:00
Juanma Barranquero
1921c31bb9 src/makefile.w32-in: Update dependencies. 2013-03-29 04:03:19 +01:00
Stefan Monnier
717b8bcd96 * src/lisp.h (save_type, XSAVE_POINTER, set_save_pointer, XSAVE_INTEGER)
(set_save_integer, XSAVE_OBJECT, XSAVE_VALUE): Move to avoid
forward references.
2013-03-28 12:21:38 -04:00
Dmitry Antipov
e74aeda863 * window.h (struct window): Replace hchild, vchild and buffer slots
with the only contents slot.  This is possible because each valid
window may have either the child window (in vertical or horizontal
combination) or buffer to display (for the leaf window).  Using that,
a lof of operations to traverse and/or change window hierarchies may
be simplified.  New member horizontal is used to distinguish between
horizontal and vertical combinations of internal windows.
(WINDOW_LEAF_P, WINDOW_HORIZONTAL_COMBINATION_P)
(WINDOW_VERTICAL_COMBINATION_P): New macros.
(WINDOW_VALID_P, WINDOW_LIVE_P): Adjust to match struct window changes.
* window.c (wset_hchild, wset_vchild): Remove.  Adjust all users.
Use contents slot, not buffer, where appropriate.
(wset_combination): New function.
(wset_buffer): Add eassert.
(Fframe_first_window): Simplify the loop reaching first window.
(Fwindow_buffer): Use WINDOW_LEAF_P.
(Fwindow_top_child): Use WINDOW_VERTICAL_COMBINATION_P.
(Fwindow_left_child): Use WINDOW_HORIZONTAL_COMBINATION_P.
(unshow_buffer): Convert initial debugging check to eassert.
(replace_window, recombine_windows, Fdelete_other_windows_internal)
(make_parent_window, window_resize_check, window_resize_apply)
(resize_frame_windows, Fsplit_window_internal, Fdelete_window_internal)
(Fset_window_configuration, delete_all_child_windows, save_window_save):
Adjust to match struct window changes.
(window_loop): Check for broken markers in CHECK_ALL_WINDOWS.
(mark_window_cursors_off, count_windows, get_leaf_windows)
(foreach_window_1): Simplify the loop.
* alloc.c (mark_object): Do not check for the leaf window because
internal windows has no glyph matrices anyway.
* dispnew.c (clear_window_matrices, showing_window_margins_p)
(allocate_matrices_for_window_redisplay, fake_current_matrices)
(allocate_matrices_for_frame_redisplay, free_window_matrices)
(build_frame_matrix_from_window_tree, mirror_make_current)
(frame_row_to_window, mirror_line_dance, check_window_matrix_pointers)
(update_window_tree, set_window_update_flags): Simplify the loop.
(sync_window_with_frame_matrix_rows): Enforce live window.
Use contents slot, not buffer, where appropriate.
* frame.c (set_menu_bar_lines_1): Use WINDOW_VERTICAL_COMBINATION_P
and WINDOW_HORIZONTAL_COMBINATION_P.
(make_frame_visible_1): Simplify the loop.
Use contents slot, not buffer, where appropriate.
* xdisp.c (hscroll_window_tree, mark_window_display_accurate)
(redisplay_windows, redisplay_mode_lines, update_cursor_in_window_tree)
(expose_window_tree): Likewise.
Use contents slot, not buffer, where appropriate.
* textprop.c (get_char_property_and_overlay): Add CHECK_LIVE_WINDOW
to avoid deleted windows.  Use contents slot instead of buffer.
* buffer.c, dispextern.h, editfns.c, fileio.c, font.c, fringe.c:
* indent.c, insdel.c, keyboard.c, keymap.c, minibuf.c, msdos.c:
* nsfns.m, nsmenu.m, nsterm.m, print.c, w32fns.c, w32menu.c, xfaces.c:
* xfns.c, xmenu.c: Use contents slot, not buffer, where appropriate.
2013-03-28 18:04:49 +04:00
Eli Zaretskii
21e930f8f7 Fix bug #14073 with referencing window total number of columns.
src/w32fns.c (Fx_show_tip): Fix compilation error under
 "--enable-check-lisp-object-type".
2013-03-28 15:45:27 +02:00
Dmitry Antipov
c7f53895b9 Fix 2013-03-28T02:41:05Z!dmantipov@yandex.ru which brokes Fbuffer_swap_text.
* buffer.c (Fbuffer_swap_text): Adjust window start markers.
Fix comment.
2013-03-28 13:25:25 +04:00
Eli Zaretskii
ef454cf704 Add debugging code to w32fns.c.
src/w32fns.c (w32_wnd_proc) [ENABLE_CHECKING]: Add code to help
 identify the reasons for assertion violations in bug#14062 and
 similar ones.
2013-03-28 11:18:16 +02:00
Eli Zaretskii
121ab1cdc4 Add DEF_IMGLIB_FN for g_error_free to image.c.
src/image.c (g_error_free) [WINDOWSNT]: Add DEF_IMGLIB_FN.
 Reported by <rzl24ozi@gmail.com>.
2013-03-28 08:40:01 +02:00
Dmitry Antipov
5c89ca240d * xdisp.c (with_echo_area_buffer_unwind_data): Save window
start marker...
(unwind_with_echo_area_buffer): ...to restore it here.  This
is needed to ensure that...
(redisplay_window): ...both window markers are valid here,
which is verified by eassert.
* editfns.c (save_excursion_save): Do not assume that
selected_window always displays the buffer.
2013-03-28 06:41:05 +04:00
Stefan Monnier
f557c1b1a9 * lisp/case-table.el (case-table-get-table): New function.
* lisp/case-table.el: Use lexical-binding.
(case-table-get-table): New function.
(get-upcase-table): Use it.  Mark as obsolete.  Adjust callers.
* src/casetab.c (init_casetab_once): Don't abuse the ascii eqv table for
the upcase table.
2013-03-27 10:33:03 -04:00
rzl24ozi
40693bbaa3 image.c [WINDOWSNT]: Fix calls to DEF_IMGLIB_FN for SVG function. 2013-03-27 15:26:34 +02:00
Eli Zaretskii
c86f791f69 Fix MinGW64 compilation warnings in w32.c and w32proc.c.
src/w32proc.c (IsValidLocale) [__GNUC__]: Don't declare prototype,
 since MinGW's w32api headers do.  This avoids compiler warnings.
 src/w32.c (FSCTL_GET_REPARSE_POINT) [_MSC_VER || _W64]: Don't define
 if already defined.
2013-03-27 14:01:31 +02:00
Eli Zaretskii
c6e72e1739 Fix MinGW64 compilation of w32.c.
src/w32.c (_REPARSE_DATA_BUFFER): Condition by _MSVC and _W64.
2013-03-26 23:22:39 +02:00
Jan Djärv
54e9501092 * gtkutil.c (style_changed_cb): Check if frame is live and an
X frame.

Fixes: debbugs:14038
2013-03-26 16:34:45 +01:00
Eli Zaretskii
8f5e14c849 More MinGW64 fixes.
src/w32.c Move inclusion of time.h before sys/time.h, so that MinGW64 could
 see its own definitions of 'struct timeval' and 'struct timezone'.
2013-03-26 16:04:07 +02:00
Eli Zaretskii
da9dcbb87f src/ChangeLog: Fix last log entry. 2013-03-26 15:47:58 +02:00
Eli Zaretskii
a18d7de614 Fix more MinGW64 incompatibilities.
Reported by ׃scar Fuentes in

  http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00733.html

 nt/inc/ms-w32.h (_WIN32_WINNT) [!_W64]: Don't define for MinGW64.
 nt/inc/sys/stat.h (chmod): Remove _CRTIMP from prototype.

 src/w32.c (_PROCESS_MEMORY_COUNTERS_EX) [_WIN32_WINNT < 0x0500]:
 Define only for _WIN32_WINNT less than 0x0500.
2013-03-26 15:45:01 +02:00
Eli Zaretskii
b88b62dec9 Fix more incompatibilities between MinGW.org and MinGW64 headers
Reported by ׃scar Fuentes in
  http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00699.html
and in
  http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00707.html.

 nt/inc/ms-w32.h (USE_NO_MINGW_SETJMP_TWO_ARGS) [_W64]: Define to 1.
 For MinGW64, include sys/types.h and time.h.
 nt/inc/sys/time.h (struct timeval) [!_W64]: Guard definition with _W64.
 (struct timezone) [!_TIMEZONE_DEFINED]: Guard definition with
 _TIMEZONE_DEFINED.
 nt/addpm.c (_WIN32_IE) [_W64]: For MinGW64, don't define to 0x400.
 nt/inc/sys/stat.h: Remove _CRTIMP from prototypes of fstat, stat,
 lstat, and fstatat.

 lib-src/ntlib.c (struct timespec) [!_TIMEZONE_DEFINED]: Define the
 struct only if _TIMEZONE_DEFINED is not defined.

 src/w32term.c (WCRANGE, GLYPHSET): Don't define if _W64 is defined.
 src/w32.c (REPARSE_DATA_BUFFER): Guard with
 MAXIMUM_REPARSE_DATA_BUFFER_SIZE being defined.
2013-03-26 10:21:27 +02:00
Jan Djärv
c074e458df Changelog for previous commit. 2013-03-25 18:59:59 +01:00
Andreas Schwab
908589fd28 Reorder conditions that are written backwards
* alloc.c (xpalloc, Fgarbage_collect): Reorder conditions that are
written backwards.
* blockinput.h (input_blocked_p): Likewise.
* bytecode.c (exec_byte_code): Likewise.
* callproc.c (call_process_kill, call_process_cleanup)
(Fcall_process): Likewise.
* ccl.c (ccl_driver, resolve_symbol_ccl_program)
(Fccl_execute_on_string): Likewise.
* character.c (string_escape_byte8): Likewise.
* charset.c (read_hex): Likewise.
* cm.c (calccost): Likewise.
* data.c (cons_to_unsigned): Likewise.
* dired.c (directory_files_internal, file_name_completion):
Likewise.
* dispnew.c (scrolling_window, update_frame_1, Fsleep_for)
(sit_for): Likewise.
* doc.c (Fsubstitute_command_keys): Likewise.
* doprnt.c (doprnt): Likewise.
* editfns.c (hi_time, decode_time_components, Fformat): Likewise.
* emacsgtkfixed.c: Likewise.
* fileio.c (file_offset, Fwrite_region): Likewise.
* floatfns.c (Fexpt, fmod_float): Likewise.
* fns.c (larger_vector, make_hash_table, Fmake_hash_table):
Likewise.
* font.c (font_intern_prop): Likewise.
* frame.c (x_set_alpha): Likewise.
* gtkutil.c (get_utf8_string): Likewise.
* indent.c (check_display_width): Likewise.
* intervals.c (create_root_interval, rotate_right, rotate_left)
(split_interval_right, split_interval_left)
(adjust_intervals_for_insertion, delete_node)
(interval_deletion_adjustment, adjust_intervals_for_deletion)
(merge_interval_right, merge_interval_left, copy_intervals)
(set_intervals_multibyte_1): Likewise.
* keyboard.c (gobble_input, append_tool_bar_item): Likewise.
* keymap.c (Fkey_description): Likewise.
* lisp.h (FIXNUM_OVERFLOW_P, vcopy): Likewise.
* lread.c (openp, read_integer, read1, string_to_number):
Likewise.
* menu.c (ensure_menu_items): Likewise.
* minibuf.c (read_minibuf_noninteractive): Likewise.
* print.c (printchar, strout): Likewise.
* process.c (create_process, Faccept_process_output)
(wait_reading_process_output, read_process_output, send_process)
(wait_reading_process_output): Likewise.
* profiler.c (make_log, handle_profiler_signal): Likewise.
* regex.c (re_exec): Likewise.
* regex.h: Likewise.
* search.c (looking_at_1, Freplace_match): Likewise.
* sysdep.c (get_child_status, procfs_ttyname)
(procfs_get_total_memory): Likewise.
* systime.h (EMACS_TIME_VALID_P): Likewise.
* term.c (dissociate_if_controlling_tty): Likewise.
* window.c (get_phys_cursor_glyph): Likewise.
* xdisp.c (init_iterator, redisplay_internal, redisplay_window)
(try_window_reusing_current_matrix, try_window_id, pint2hrstr):
Likewise.
* xfns.c (Fx_window_property): Likewise.
* xmenu.c (set_frame_menubar): Likewise.
* xselect.c (x_get_window_property, x_handle_dnd_message):
Likewise.
* xsmfns.c (smc_save_yourself_CB): Likewise.
* xterm.c (x_scroll_bar_set_handle): Likewise.
2013-03-24 13:59:45 +01:00
Dmitry Antipov
2bf7d27acd * xfaces.c (Finternal_face_x_get_resource): Allow 3rd (frame) argument
to be optional or nil.  Adjust comment and convert it to docstring.
* xselect.c (Fx_send_client_event): Rename to Fx_send_client_message.
* frame.c (display_x_get_resource, Fx_get_resource): Break long line.
2013-03-24 09:29:35 +04:00
Paul Eggert
a9ebfa0b3e Static checking by GCC 4.8-20130319.
* image.c (gif_load): Assume pass < 3 to pacify GCC.
* process.c (Fset_process_datagram_address)
(Fmake_network_process): Check get_lisp_to_sockaddr_size return value.
* xdisp.c (get_char_face_and_encoding):
(get_glyph_face_and_encoding): Ensure that *CHAR2B is initialized.
(get_glyph_face_and_encoding): Prepare face before possibly using it.
(get_per_char_metric): Don't use CHAR2B if it might not be initialized.
2013-03-23 19:40:51 -07:00
Ken Brown
789b5e9a7f * src/w32fns.c (emacs_abort) [CYGWIN]: Define `_open' as a macro. 2013-03-23 20:48:49 -04:00
Ken Brown
4f3576ee21 * src/w32term.c (w32_initialize): Silence compiler warning. 2013-03-23 20:16:11 -04:00
Eli Zaretskii
cdc0d0bdbd Fix fullscreen resizing of multiple frames on MS-Windows.
src/w32term.h (struct w32_output): New members normal_width,
 normal_height, normal_top, normal_left, and prev_fsmode.
 (FRAME_NORMAL_WIDTH, FRAME_NORMAL_HEIGHT, FRAME_NORMAL_TOP)
 (FRAME_NORMAL_LEFT, FRAME_PREV_FSMODE): New macros to access these
 members of a frame.
 src/w32term.c (w32fullscreen_hook): Use FRAME_NORMAL_WIDTH,
 FRAME_NORMAL_HEIGHT, and FRAME_PREV_FSMODE, instead of static
 variables, to save and restore frame dimensions.  Use
 FRAME_NORMAL_LEFT and FRAME_NORMAL_TOP to restore frame position
 after returning from a 'fullscreen' configuration.  use
 SendMessage instead of PostMessage to send the SC_RESTORE message,
 to avoid races between the main thread and the input thread.
2013-03-23 21:40:43 +02:00
Eli Zaretskii
b5b7745f1f Fix bug #14032 with restoring frame dimensions on MS-Windows.
src/w32term.c (w32fullscreen_hook): Record last value of the frame's
 'fullscreen' parameter.  Always record previous width and height
 of the frame, except when switching out of maximized modes, so
 that they could be restored correctly, instead of resetting to the
 default frame dimensions.  Send SC_RESTORE command to the frame,
 unless we are going to send SC_MAXIMIZE, to restore the frame
 resize hints in the mouse pointer shown by the window manager.
 src/frame.c (get_frame_param): Now extern for WINDOWSNT as well.
 src/lisp.h (get_frame_param): Adjust conditions for prototype
 declaration.
2013-03-23 11:01:14 +02:00
Ken Brown
a3454eedcd * src/unexcw.c: Update for x86_64-cygwin.
Drop unneeded inclusion of w32common.h.
(report_sheap_usage): Declare.
(read_exe_header): Add magic numbers for x86_64.
(fixup_executable): Fix printf format specifier for unsigned long
argument.
2013-03-22 12:52:31 -04:00
Dmitry Antipov
5a49b79cf8 * frame.h (struct frame): Put menu_bar_window under #ifdef
because this member is not needed when X toolkit is in use.
(fset_menu_bar_window):
* dispnew.c (clear_current_matrices, clear_desired_matrices)
(free_glyphs, update_frame):
* xdisp.c (expose_frame): Likewise.
(display_menu_bar): Likewise.  Remove redundant eassert.
* window.h (WINDOW_MENU_BAR_P): Always define to 0 if X
toolkit is in use.
2013-03-22 16:41:34 +04:00
Paul Eggert
7b1123d824 Use functions and constants to manipulate Lisp_Save_Value objects.
This replaces code that used macros and strings and token-pasting.
The change makes the C source a bit easier to follow,
and shrinks the Emacs executable a bit.
* alloc.c: Verify some properties of Lisp_Save_Value's representation.
(make_save_value): Change 1st arg from string to enum.  All callers
changed.
(INTX): Remove.
(mark_object): Use if, not #if, for GC_MARK_STACK.
* lisp.h (SAVE_VALUEP, XSAVE_VALUE, XSAVE_POINTER, XSAVE_INTEGER)
(XSAVE_OBJECT): Now functions, not macros.
(STRING_BYTES_BOUND): Now just a macro, not a constant too;
the constant was never used.
(SAVE_SLOT_BITS, SAVE_VALUE_SLOTS, SAVE_TYPE_BITS, SAVE_TYPE_INT_INT)
(SAVE_TYPE_INT_INT_INT, SAVE_TYPE_OBJ_OBJ, SAVE_TYPE_OBJ_OBJ_OBJ)
(SAVE_TYPE_OBJ_OBJ_OBJ_OBJ, SAVE_TYPE_PTR_INT, SAVE_TYPE_PTR_OBJ)
(SAVE_TYPE_PTR_PTR, SAVE_TYPE_PTR_PTR_OBJ, SAVE_TYPE_MEMORY):
New constants.
(struct Lisp_Save_Value): Replace members area, type0, type1, type2,
type3 with a single member save_type.  All uses changed.
(save_type, set_save_pointer, set_save_integer): New functions.
* print.c (PRINTX): Remove.
2013-03-21 13:56:22 -07:00
Paul Eggert
d6723bf7e5 * alloc.c: Remove redundant static declarations. 2013-03-21 11:28:50 -07:00