summaryrefslogtreecommitdiff
path: root/src/pgtkfns.c
AgeCommit message (Collapse)Author
2026-06-01Check whether g_settings_schema_source_get_default returned NULLDan R. K. Ports
* src/pgtkfns.c (parse_resource_key): * src/xsettings.c (init_gsettings): Check whether g_settings_schema_source_look up returned NULL (bug#81166). Copyright-paperwork-exempt: yes
2026-05-23Be more careful about size multiplicationPaul Eggert
* src/alloc.c (xcalloc): New function. * src/dispnew.c (save_current_matrix): * src/fns.c (Finternal__hash_table_histogram): * src/nsfns.m (Fns_display_monitor_attributes_list): * src/pgtkfns.c (Fpgtk_display_monitor_attributes_list): * src/pgtkselect.c (pgtk_own_selection): * src/profiler.c (make_log): * src/sfnt.c (sfnt_poly_edges_exact): * src/xfns.c (x_get_monitor_attributes_xinerama) (x_get_monitor_attributes_xrandr, Fx_display_monitor_attributes_list): Use it instead of multiplying by hand, conceivably with overflow. * src/profiler.c (make_log): Check for overflow in internal size calculations. Use xnmalloc instead of multiply + xmalloc. * src/sfnt.c (xzalloc) [TEST]: Remove, replacing with ... (xicalloc) [TEST]: ... this new function. All callers changed. (eassert) [TEST]: New macro. * src/treesit.c (treesit_calloc_wrapper): Remove, replacing its use with xcalloc.
2026-05-01Remove the effect of x_gtk_resize_child_frames=hideDmitry Gutov
* src/gtkutil.c (xg_frame_set_char_size): Remove the effect of x_gtk_resize_child_frames, effectively reverting that part of c49d379f17bc (bug#80662). * src/pgtkfns.c (syms_of_pgtkfns): Remove defsyms Qhide and Qresize_mode, never used with PGTK. * src/xfns.c (x-gtk-resize-child-frames): Update docstring.
2026-04-18Pacify clang 21.1.8 + gdk-pixbuf 2.44Paul Eggert
* src/pgtkfns.c (xg_set_icon_from_xpm_data): * src/xfns.c (xg_set_icon_from_xpm_data): Also pacify clang when --enable-gcc-warnings is used.
2026-02-13Pacify GCC with gdk-pixbuf 2.44Paul Eggert
* src/pgtkfns.c (xg_set_icon_from_xpm_data): * src/xfns.c (xg_set_icon_from_xpm_data): gdk-pixbuf 2.44 (2025-09) deprecated xg_set_icon_from_xpm_data, and this breaks --enable-gcc-warnings builds. For now, pacify GCC by using a pragma.
2026-01-13Add frame identifiers (bug#80138)Stéphane Marks
A unique frame id is assigned to a new or cloned frame, and reused on an undeleted frame. The id facilitates unambiguous identification among frames that share identical names or titles, deleted frames where a live frame object no longer exists that we can resurrect by id, for example via 'tab-bar-undo-close-tab'. It also aids debugging at the C level using the frame struct member id. Rewrite 'clone-frame' and 'undelete-frame' to not let bind variables that 'make-frame' uses to avoid conflicts with nested 'make-frame' calls, for example via 'after-make-frame-functions'. * lisp/frame.el (clone-frame, undelete-frame): Use 'frame--purify-parameters' to supply parameters explicitly. (undelete-frame--save-deleted-frame): Save frame id for restoration. (undelete-frame): Restore frame id. (frame--purify-parameters): New defun. (make-frame): Assign a new id for a new or cloned frame, reuse for undeleted frame. * src/frame.h (struct frame): Add id member. (frame_next_id): New extern. * src/frame.c (frame_next_id): New global counter. (frame_set_id, frame_set_id_from_params): New function. (Fframe_id): New DEFUN. (syms_of_frame <Sframe_id>): New defsubr. (syms_of_frame <Qinternal_id>): New DEFSYM. (syms_of_frame <frame_internal_parameters>): Add 'Qinternal_id'. * src/androidfns.c (Fx_create_frame): * src/haikufns.c (Fx_create_frame): * src/nsfns.m (Fx_create_frame): * src/pgtkfns.c (Fx_create_frame): * src/w32fns.c (Fx_create_frame): * src/xfns.c (Fx_create_frame): Call 'frame_set_id_from_params'. * doc/lispref/frames.texi: Add documentation. * etc/NEWS: Announce frame id.
2026-01-01; Add 2026 to copyright years.Sean Whitton
2025-08-05Handle inhibiting implied resizing for frames without initial tool barMartin Rudalics
* src/xfns.c (x_set_tool_bar_lines, x_change_tool_bar_height) * src/pgtkfns.c (x_change_tool_bar_height) (pgtk_set_tool_bar_lines): Set f->tool_bar_resized to true so inhibiting implied resizing works for frames without initial tool bar too. See the thread https://lists.gnu.org/archive/html/emacs-devel/2025-08/msg00034.html.
2025-07-26Add frame parameter which allows border transparencyGarklein
The new 'borders-respect-alpha-background' frame parameter, when set to 't', will make window dividers and internal borders respect the 'alpha-background' frame parameter. This allows transparent gaps between windows. * doc/lispref/frames.texi (Font and Color Parameters): Document the change. * src/frame.c (frame_parm_table, syms_of_frame) (gui_set_borders_respect_alpha_background): * src/frame.h (struct frame): Add frame parameter. * src/androidfns.c (x_create_frame, android_create_tip_frame) (android_frame_parm_handlers): * src/haikufns.c (haiku_create_frame, haiku_create_tip_frame) (haiku_frame_parm_handlers): * src/nsfns.m (ns_frame_parm_handlers, x_create_frame): * src/w32fns.c (x_create_frame, w32_create_tip_frame) (w32_frame_parm_handlers): Add dummy parameters for backends that don't support opacity. * src/pgtkfns.c (pgtk_frame_parm_handlers, x_create_frame) (pgtk_create_tip_frame): * src/pgtkterm.c (pgtk_draw_window_divider): * src/xfns.c (x_create_frame, x_create_tip_frame) (x_frame_parm_handlers) * src/xterm.c (x_draw_window_divider) (x_clear_under_internal_border): Implement parameter on backends that support opacity.
2025-04-19; Delete superfluous comments explaining config.hStefan Kangas
* src/pgtkfns.c: * src/pgtkim.c: * src/pgtkmenu.c: * src/pgtkselect.c: * src/pgtkterm.c: * src/termcap.c: * src/tparam.c: Delete superfluous comments explaining config.h.
2025-04-18pgtk: Make x-display-grayscale-p return QtStefan Kangas
We already unconditionally claim that `xw-display-color-p`, which, according to the docstring of this function, implies that we handle grayscale too. * src/pgtkfns.c (Fx_display_grayscale_p): Return Qt unconditionally.
2025-04-17* src/pgtkfns.c (Fx_gtk_launch_uri): Improve docstring.Stefan Kangas
2025-04-17Delete duplicate docstrings in PGTK buildStefan Kangas
* src/pgtkfns.c (Fx_export_frames, Fx_create_frame) (Fx_server_max_request_size, Fx_display_screens, Fx_display_mm_height) (Fx_display_mm_width, Fx_display_backing_store, Fx_display_visual_class) (Fx_display_save_under, Fx_open_connection, Fx_close_connection) (Fx_display_list, Fxw_color_defined_p, Fxw_color_values) (Fxw_display_color_p, Fx_display_grayscale_p, Fx_display_pixel_width) (Fx_display_pixel_height, Fx_display_planes, Fx_display_color_cells) (Fx_show_tip, Fx_hide_tip, Fx_file_dialog, Fx_select_font): Replace duplicate docstrings with "SKIP" marker. See the comment in doc.c. * src/xfns.c (Fx_server_max_request_size, Fx_display_screens) (Fx_display_backing_store, Fx_display_visual_class, Fx_file_dialog): Update docstrings with details about the PGTK build.
2025-02-27Fix drag-and-drop treatment of reused tooltip framesPo Lu
* src/androidfns.c (Fx_show_tip): Set `tip_window' to that of any reused tooltip frame. * src/haikufns.c (unwind_create_frame): Return whether the frame was destroyed, as on X. (unwind_create_tip_frame, haiku_create_frame, Fx_show_tip): Synchronize with X. (do_unwind_create_frame): New function. (tip_window): Remove unused variable. * src/nsfns.m (tip_window, unwind_create_tip_frame): Remove unused variable `tip_window'. * src/pgtkfns.c (pgtk_create_tip_frame): Rename to pgtk_create_tip_frame. (Fx_show_tip): Adjust accordingly. Set `tip_window' to that of any reused tooltip frame. * src/w32fns.c (Fx_show_tip): * src/xfns.c (Fx_show_tip): Set `tip_window' to that of any reused tooltip frame.
2025-02-01Merge branch 'scratch/no-purespace' into 'master'Stefan Kangas
2025-01-26Fix x-show-tip bignum crashPaul Eggert
* src/pgtkfns.c (compute_tip_xy): Fix crash if user specifies bignums. Bug found with --enable-gcc-warnings.
2025-01-19Prefer the 'min'/'max' macros where possibleStefan Kangas
* src/composite.c (find_automatic_composition): * src/lisp.h (clip_to_bounds): * src/pgtkfns.c (PATH_MAX_LEN): * src/profiler.c (approximate_median): * src/unexmacosx.c (unexec_write_zero, unexec_copy, unexec_realloc): * src/xdisp.c (get_nearby_bol_pos): Prefer the 'min' and 'max' macros.
2025-01-19Replace call[1-8] with callnStefan Kangas
Since the introduction of the 'calln' macro, the 'call1', 'call2', ..., 'call8' macros are just aliases for the former. This is slightly misleading and potentially unhelpful. The number of arguments N can also easily go out-of-synch with the used alias callN. There is no reason not to replace these aliases with using 'calln' directly. To reduce the risk for mistakes, the tool Coccinelle was used to make these changes. See <https://coccinelle.gitlabpages.inria.fr/website/>. * src/alloc.c, src/androidvfs.c, src/androidfns.c, src/buffer.c: * src/callint.c, src/callproc.c, src/casefiddle.c, src/charset.c: * src/chartab.c, src/cmds.c, src/coding.c, src/composite.c: * src/data.c, src/dbusbind.c, src/dired.c, src/doc.c: * src/emacs.c, src/eval.c, src/fileio.c, src/filelock.c: * src/fns.c, src/frame.c, src/gtkutil.c, src/haikufns.c: * src/haikumenu.c, src/image.c, src/insdel.c, src/intervals.c: * src/keyboard.c, src/keymap.c, src/lisp.h, src/lread.c: * src/minibuf.c, src/nsfns.m, src/nsselect.m, src/pgtkfns.c: * src/pgtkselect.c, src/print.c, src/process.c, src/sort.c: * src/syntax.c, src/textconv.c, src/textprop.c, src/undo.c: * src/w32fns.c, src/window.c, src/xfaces.c, src/xfns.c: * src/xmenu.c, src/xselect.c, src/xterm.c: Replace all uses of 'call1', 'call2', ..., 'call8' with 'calln'.
2025-01-01Update copyright year to 2025Paul Eggert
Run "TZ=UTC0 admin/update-copyright".
2024-12-28Make browser windows pop up when browsing URLs on WaylandDaniel Colascione
When a user invokes browse-url, the browser window viewing the URL should be raised in the user's desktop environment. On X11, running xdg-open as a subprocess does the job. However, on Wayland, this approach doesn't work: xdg-open makes the web browser browse a URL all right, but doesn't raise the browser window in the GUI. Therefore, if the browser window is behind Emacs, browse-url appears to do nothing. Repeated invocations of browse-url cause the browser to load multiple tabs in the background, surprising the user when he gives up in frustration and manually switches to the browser window. There's no subprocess we can run to make the right thing happen. Wayland requires that we pass along event activation information to the browser using the xdg_activation_v1 protocol. This change adds x-gtk-launch-uri to invoke GTK-native URL-dispatch machinery. This machinery DTRT on both X11 and Wayland. We fall back to the default browser machinery if we're not on a GTK frame. The logic is more complicated than it has to be because the GTK URI launch mechanism requires that we launch with respect to a specific GTK window, and in some environments (e.g., running emacs -nw in a PGTK Emacs) we don't have a GTK window. We also want to preserve the effect of customizing browse-url-browser-function, so adding an entry to browse-url-default-handlers that preempts URI open when we happen to be on a GTK frame is the wrong thing to do. * lisp/net/browse-url.el (browse-url--browser-defcustom-type): (browse-url--inhibit-pgtk): avoid infinite recursion (browse-url-default-browser): use pgtk launch (x-gtk-launch-uri): new function (browse-url-default-gtk-browser): ues it * src/pgtkfns.c (unwind_gerror_ptr): new function (Fx_gtk_launch_uri): new function (syms_of_pgtkfns): register it * etc/NEWS: mention the new feature
2024-12-19Remove remaining references to redisplay-dont-pauseGerd Möllmann
* src/pgtkfns.c (Fpgtk_print_frames_dialog): Remove reference to Qredisplay_dont_pause. * src/pgtkterm.c (pgtk_cr_export_frames): Remove reference to Qredisplay_dont_pause. * src/xfns.c (Fx_print_frames_dialog): Remove reference to Qredisplay_dont_pause. * src/xterm.c (x_cr_export_frames): Remove reference to Qredisplay_dont_pause.
2024-12-12Pure storage removal: Replace calls to removed functionsPip Cet
* src/alloc.c (string_bytes, pin_string, valid_lisp_object_p) (process_mark_stack, survives_gc_p, syms_of_alloc): * src/androidterm.c (android_term_init): Replace call to 'build_pure_c_string'. * src/buffer.c (init_buffer_once, syms_of_buffer): * src/bytecode.c (exec_byte_code): * src/callint.c (syms_of_callint): * src/callproc.c (syms_of_callproc): * src/category.c (Fdefine_category): * src/coding.c (syms_of_coding): * src/comp.c (Fcomp__compile_ctxt_to_file0) (maybe_defer_native_compilation, syms_of_comp): * src/data.c (Fsetcar, Fsetcdr, Fdefalias, Faset, syms_of_data): * src/dbusbind.c (syms_of_dbusbind): * src/doc.c (Fsnarf_documentation): * src/emacs-module.c (syms_of_module): * src/eval.c (Finternal__define_uninitialized_variable) (Fdefconst_1, define_error, syms_of_eval): * src/fileio.c (syms_of_fileio): * src/fns.c (Ffillarray, Fclear_string, check_mutable_hash_table): * src/fontset.c (syms_of_fontset): * src/frame.c (make_initial_frame): * src/haikufns.c (syms_of_haikufns): * src/intervals.c (create_root_interval): * src/keyboard.c (syms_of_keyboard): * src/keymap.c (Fmake_sparse_keymap, Fset_keymap_parent) (store_in_keymap, syms_of_keymap): * src/lisp.h: * src/lread.c (Fload, read0, intern_c_string_1, define_symbol) (Fintern, defsubr, syms_of_lread): * src/pdumper.c (Fdump_emacs_portable): * src/pgtkfns.c (syms_of_pgtkfns): * src/pgtkterm.c (syms_of_pgtkterm): * src/process.c (syms_of_process): * src/search.c (syms_of_search): * src/sqlite.c (syms_of_sqlite): * src/syntax.c (syms_of_syntax): * src/treesit.c (syms_of_treesit): * src/w32fns.c (syms_of_w32fns): * src/xdisp.c (syms_of_xdisp): * src/xfaces.c (syms_of_xfaces): * src/xfns.c (syms_of_xfns): * src/xftfont.c (syms_of_xftfont): * src/xterm.c (syms_of_xterm): Remove calls to 'PURE_P', 'CHECK_IMPURE', 'Fpurecopy', and replace calls to 'build_pure_c_string', 'pure_list', 'pure_listn', etc., by impure equivalents.
2024-07-19Merge from origin/emacs-30Stefan Monnier
a478423d19f * lisp/progmodes/peg.el (peg-syntax-classes): Typo (bug#7... 951fb93956d * lisp/transient.el (static-if): Remove duplicated defini... 0218fb21437 Adapt file-remote-p doc 34c1094e607 ; Fix typo in etc/ORG-NEWS (Bug#72186) 5916b172bdc * etc/TODO: Delete item about merging Magit. a6cab228d4d ; Fix typos 41dc28244f2 * doc/man/emacs.1.in: Add "No warranty" notice. b2ac3435867 ; * doc/man/emacs.1.in: Improve wording. 110b3d08d73 Improve emacs man page description of --user flag 4911f08912a Checkdoc fixes in allout-widgets.el 109b592d77b Checkdoc fixes in subr.el 46436720787 Checkdoc fixes in touch-screen.el 9889774c62e Checkdoc fixes in treesit.el # Conflicts: # etc/NEWS
2024-07-18Fix minor code style issue in pgtkfns.cStefan Kangas
* src/pgtkfns.c (pgtk_get_defaults_value) (pgtk_set_defaults_value): Fix code style.
2024-07-18Avoid overflow in pgtk_is_numeric_charStefan Kangas
* src/pgtkfns.c (PATH_MAX_LEN): New macro. (parse_resource_key): Avoid overflow if a key is RESOURCE_KEY_MAX_LEN long by making the array larger.
2024-07-18Use strnlen to avoid unnecessary work in pgtkfns.cStefan Kangas
* src/pgtkfns.c (pgtk_get_defaults_value, pgtk_set_defaults_value): Factor out new function... (pgtk_check_resource_key_length): ...to here. Avoid unnecessary work by using strnlen.
2024-07-18; Fix typosStefan Kangas
2024-07-18Avoid overflow in pgtk_is_numeric_charStefan Kangas
* src/pgtkfns.c (parse_resource_key): Avoid overflow by making array larger, if a key is RESOURCE_KEY_MAX_LEN long. Do not merge to master, since it's fixed in a different way there.
2024-07-16Make error messages adhere to our standardsStefan Kangas
* src/cygw32.c (chdir_to_default_directory): * src/fns.c (secure_hash): * src/keyboard.c (Finternal_handle_focus_in): * src/keymap.c (store_in_keymap): * src/pgtkfns.c (pgtk_set_scroll_bar_foreground) (pgtk_set_scroll_bar_background, Fx_export_frames) (Fpgtk_set_monitor_scale_factor, pgtk_get_defaults_value) (pgtk_set_defaults_value, Fpgtk_print_frames_dialog) (pgtk_get_monitor_scale_factor): * src/pgtkterm.c (pgtk_set_parent_frame): * src/process.c (network_interface_info, send_process): * src/w32.c (w32_read_registry): * src/w32fns.c (Fw32_read_registry): * src/window.c (Frecenter): * src/xfns.c (Fx_export_frames, Fx_print_frames_dialog) (x_set_mouse_color): Make 'error' message strings follow our guidelines. More specifically, they should not end in a period, and normally also be capitalized. See '(elisp) Programming Tips'.
2024-06-20Correctly cache images when frames vary in their font metricsPo Lu
* src/alloc.c (mark_frame): Mark this frame's image cache, if it exist. (mark_terminals): Cease marking T->image_cache. * src/androidfns.c (unwind_create_frame, Fx_create_frame) (android_create_tip_frame): * src/haikufns.c (unwind_create_frame, haiku_create_frame) (haiku_create_tip_frame): * src/nsfns.m (unwind_create_frame): * src/pgtkfns.c (unwind_create_frame, Fx_create_frame) (x_create_tip_frame): * src/xfns.c (unwind_create_frame, Fx_create_frame) (x_create_tip_frame): * src/w32fns.c (unwind_create_frame, Fx_create_frame) (w32_create_tip_frame): Remove adjustments of the frame image cache's reference count rendered redundant by the assignment of image caches to individual frames rather than terminals. * src/dispextern.h (struct image_cache) <scaling_col_width>: New field. * src/frame.c (gui_set_font): In lieu of clearing F's image cache unconditionally, establish whether the column width as considered by compute_image_size has changed, and if so, adjust or reassign the frame's image cache. (make_frame): Clear F->image_cache. * src/frame.h (struct frame) <image_cache>: New field. (FRAME_IMAGE_CACHE): Return F->image_cache. * src/image.c (make_image_cache): Clear C->scaling_col_width. (cache_image): Adjust to new means of assigning image caches to frames. * src/termhooks.h (struct terminal) <image_cache>: Delete field. * src/xfaces.c (init_frame_faces): Do image cache assignment with all new frames.
2024-06-01Implement touch screen events on PGTKPo Lu
* etc/NEWS: Better qualify entry for touch screen events. * lisp/loadup.el (featurep 'pgtk): Load touch-screen.el. * lisp/touch-screen.el: Revise list of systems where touch screen events are reported. * src/gtkutil.c (xg_create_frame_widgets): Request GDK_TOUCH_MASK. * src/pgtkfns.c (pgtk_frame_parm_handlers, tip_window): Pacify compiler warning. * src/pgtkterm.c (pgtk_free_frame_resources): Free touch points linked to this frame. (pgtk_link_touch_point, pgtk_unlink_touch_point) (pgtk_unlink_touch_points, pgtk_find_touch_point): New functions, ported from X. (touch_event_cb): New event callback. (pgtk_set_event_handler): Register `touch_event_cb' as handler for `touch-event'. (pgtk_delete_display): Free residual touch points on this display. * src/pgtkterm.h (struct pgtk_touch_point): New structure. (struct pgtk_display_info) <touchpoints>: New field.
2024-05-09Replace calls to intern with a constant string with DEFSYMsPo Lu
* src/alloc.c (display_malloc_warning, syms_of_alloc): * src/buffer.c (Fmake_indirect_buffer, Fbuffer_local_variables) (Frename_buffer, Fkill_buffer, Fset_buffer_major_mode) (Fset_buffer_multibyte, syms_of_buffer): * src/callint.c (read_file_name, Fcall_interactively) (syms_of_callint): * src/callproc.c (call_process, create_temp_file) (syms_of_callproc): * src/charset.c (Fdefine_charset_internal, syms_of_charset): * src/cmds.c (internal_self_insert, syms_of_cmds): * src/coding.c (record_conversion_result) (Fdefine_coding_system_internal, syms_of_coding): * src/dbusbind.c (xd_signature, Fdbus_message_internal) (syms_of_dbusbind): * src/dispnew.c (init_faces_initial): * src/doc.c (Fsnarf_documentation, syms_of_doc): * src/dosfns.c (system_process_attributes, syms_of_dosfns): * src/emacs.c (init_cmdargs, Fdump_emacs, decode_env_path) (syms_of_emacs): * src/eval.c (call_debugger, Fdefvaralias, syms_of_eval): * src/fileio.c (barf_or_query_if_file_exists) (Finsert_file_contents, auto_save_error, Fdo_auto_save) (syms_of_fileio): * src/filelock.c (lock_file_1, syms_of_filelock): * src/fontset.c (fontset_from_font, syms_of_fontset): * src/frame.c (make_frame_without_minibuffer, syms_of_frame): * src/gnutls.c (emacs_gnutls_certificate_details) (Fgnutls_peer_status_warning_describe, Fgnutls_peer_status) (gnutls_verify_boot, syms_of_gnutls): * src/gtkutil.c (style_changed_cb, find_rtl_image): * src/image.c (imagemagick_filename_hint, gs_load) (syms_of_image): * src/keyboard.c (command_loop_1, read_char, timer_start_idle) (read_char_minibuf_menu_prompt, Fsuspend_emacs) (syms_of_keyboard): * src/keymap.c (Fmap_keymap, Flookup_key, Fdescribe_vector) (describe_vector, syms_of_keymap): * src/lread.c (Fread, Fread_positioning_symbols, syms_of_lread): * src/minibuf.c (Fabort_minibuffers, Fread_buffer) (Fcompleting_read, syms_of_minibuf): * src/msdos.c (XMenuActivate, run_msdos_command, syms_of_msdos): * src/nsfns.m (Fx_display_backing_store, Fx_display_visual_class) (Fns_hide_emacs, Fsystem_move_file_to_trash, ns_create_tip_frame) (x_hide_tip, Fx_show_tip, syms_of_nsfns): * src/nsfont.m (ns_spec_to_descriptor, ns_descriptor_to_entity) (syms_of_nsfont): * src/pdumper.c (Fdump_emacs_portable): * src/pgtkfns.c (Fx_display_visual_class, x_create_tip_frame) (Fx_show_tip, syms_of_pgtkfns): * src/pgtkterm.c (syms_of_pgtkterm, pgtk_cr_export_frames): * src/term.c (term_get_fkeys_1, set_tty_color_mode, Fsuspend_tty) (Fresume_tty, tty_menu_activate, syms_of_term): * src/terminal.c (create_terminal, syms_of_terminal): * src/w32fns.c (Fx_display_backing_store) (Fx_display_visual_class, Fset_message_beep, Fx_open_connection) (Fx_show_tip, Fx_file_dialog, Fsystem_move_file_to_trash) (Fw32_toggle_lock_key, syms_of_w32fns): * src/w32font.c (w32_enumfont_pattern_entity, syms_of_w32font): * src/w32term.c (w32_bitmap_icon, syms_of_w32term): * src/xdisp.c (message_dolog, define_frame_cursor1) (syms_of_xdisp): * src/xfaces.c (tty_lookup_color, syms_of_xfaces): * src/xml.c (make_dom, syms_of_xml): * src/xterm.c (syms_of_xterm): * src/xwidget.c (store_xwidget_download_callback_event) (store_xwidget_js_callback_event, syms_of_xwidget): Define symbols for symbols interned with `intern' from a constant string, delete duplicate DEFSYM directives, and substitute them for such calls to intern. This excludes only those symbols which are interned and referenced only once during Emacs's initialization, the timing of whose interning is inconsequential, and symbols in w32.c, which would need to be transferred to a new syms_of_w32 function that I cannot test.
2024-01-02Merge from savannah/emacs-29Po Lu
dc4e6b13296 ; Update copyright years in more files 64b37776318 ; Run set-copyright from admin.el 8e1c56ae467 ; Add 2024 to copyright years # Conflicts: # doc/misc/modus-themes.org # doc/misc/texinfo.tex # etc/NEWS # etc/refcards/ru-refcard.tex # etc/themes/modus-operandi-theme.el # etc/themes/modus-themes.el # etc/themes/modus-vivendi-theme.el # lib/alloca.in.h # lib/binary-io.h # lib/c-ctype.h # lib/c-strcasecmp.c # lib/c-strncasecmp.c # lib/careadlinkat.c # lib/cloexec.c # lib/close-stream.c # lib/diffseq.h # lib/dup2.c # lib/filemode.h # lib/fpending.c # lib/fpending.h # lib/fsusage.c # lib/getgroups.c # lib/getloadavg.c # lib/gettext.h # lib/gettime.c # lib/gettimeofday.c # lib/group-member.c # lib/malloc.c # lib/md5-stream.c # lib/md5.c # lib/md5.h # lib/memmem.c # lib/memrchr.c # lib/nanosleep.c # lib/save-cwd.h # lib/sha1.c # lib/sig2str.c # lib/stdlib.in.h # lib/strtoimax.c # lib/strtol.c # lib/strtoll.c # lib/time_r.c # lib/xalloc-oversized.h # lisp/auth-source-pass.el # lisp/emacs-lisp/lisp-mnt.el # lisp/emacs-lisp/timer.el # lisp/info-look.el # lisp/jit-lock.el # lisp/loadhist.el # lisp/mail/rmail.el # lisp/net/ntlm.el # lisp/net/webjump.el # lisp/progmodes/asm-mode.el # lisp/progmodes/project.el # lisp/progmodes/sh-script.el # lisp/textmodes/flyspell.el # lisp/textmodes/reftex-toc.el # lisp/textmodes/reftex.el # lisp/textmodes/tex-mode.el # lisp/url/url-gw.el # m4/alloca.m4 # m4/clock_time.m4 # m4/d-type.m4 # m4/dirent_h.m4 # m4/dup2.m4 # m4/euidaccess.m4 # m4/fchmodat.m4 # m4/filemode.m4 # m4/fsusage.m4 # m4/getgroups.m4 # m4/getloadavg.m4 # m4/getrandom.m4 # m4/gettime.m4 # m4/gettimeofday.m4 # m4/gnulib-common.m4 # m4/group-member.m4 # m4/inttypes.m4 # m4/malloc.m4 # m4/manywarnings.m4 # m4/mempcpy.m4 # m4/memrchr.m4 # m4/mkostemp.m4 # m4/mktime.m4 # m4/nproc.m4 # m4/nstrftime.m4 # m4/pathmax.m4 # m4/pipe2.m4 # m4/pselect.m4 # m4/pthread_sigmask.m4 # m4/readlink.m4 # m4/realloc.m4 # m4/sig2str.m4 # m4/ssize_t.m4 # m4/stat-time.m4 # m4/stddef_h.m4 # m4/stdint.m4 # m4/stdio_h.m4 # m4/stdlib_h.m4 # m4/stpcpy.m4 # m4/strnlen.m4 # m4/strtoimax.m4 # m4/strtoll.m4 # m4/time_h.m4 # m4/timegm.m4 # m4/timer_time.m4 # m4/timespec.m4 # m4/unistd_h.m4 # m4/warnings.m4 # nt/configure.bat # nt/preprep.c # test/lisp/register-tests.el
2024-01-02; Add 2024 to copyright yearsPo Lu
2023-11-23Prevent tab bar from vanishing on AndroidPo Lu
* src/androidfns.c (android_change_tab_bar_height): Amend with code absent when the function was first transcribed. * src/haikufns.c (haiku_change_tab_bar_height): * src/nsfns.m (ns_change_tab_bar_height): * src/pgtkfns.c (pgtk_change_tab_bar_height): * src/w32fns.c (w32_change_tab_bar_height): * src/xfns.c (x_change_tab_bar_height): Revise commentary.
2023-06-21; * src/pgtkfns.c (frame_geometry): Fix typo in last change.Po Lu
2023-06-21Allow displaying tool bar on the bottom of the framePo Lu
* src/xterm.c (x_clear_under_internal_border): Subtract bottom margins before clearing bottom border. (XTflash): Subtract bottom margins before flashing mini window. * src/xfns.c (x_set_tool_bar_position): Allow setting different values outside of GTK+. (frame_geometry): Adjust inner width and height for tool bars placed on the bottom. * src/xdisp.c (init_xdisp): Calculate using top margins only. * src/window.c (resize_frame_windows): Fix commentary. * src/w32fns.c (Fw32_frame_geometry): Report tool bar position correctly. (w32_clear_under_internal_border): Subtract bottom margins prior to clearing bottom border. (w32_set_tool_bar_position): New function. (Fw32_frame_edges): Subtract bottom tool bar from inner width and height. (w32_frame_parm_handlers): Add `set_tool_bar_position' parameter handler. * src/pgtkterm.c (pgtk_flash): Subtract bottom margins before clearing bottom border. (XTflash): Subtract bottom margins before flashing mini window. * src/pgtkfns.c (frame_geometry): Set `inner_top' correctly. (Fpgtk_set_mouse_absolute_pixel_position): (Fpgtk_mouse_absolute_pixel_position): (Fpgtk_page_setup_dialog): (Fpgtk_get_page_setup): Wrap lines which cause C Mode to hang. * src/nsterm.m (ns_clear_under_internal_border): Subtract bottom margins before clearing bottom border. * src/nsfns.m (ns_set_tool_bar_position): New function. Error if arg is not top. (ns_frame_parm_handlers): Add that as the handler for `tool-bar-position', to prevent it from being set to an invalid value. * src/haikuterm.c (haiku_flash): Subtract bottom margins before flashing mini window. (haiku_clear_under_internal_border): Subtract bottom margins before clearing bottom border. * src/haikufns.c (haiku_set_tool_bar_position): Allow setting values other than `top'. (frame_geometry): Take bottom margin into account when calculating inner dimensions. * src/frame.h (struct frame): Always define `tool_bar_position'. (fset_tool_bar_position): Define function everywhere. (FRAME_TOOL_BAR_POSITION): Define correctly on all toolkits. (FRAME_TOOL_BAR_TOP_HEIGHT): (FRAME_TOOL_BAR_TOP_LINES): (FRAME_TOOL_BAR_BOTTOM_HEIGHT): (FRAME_TOOL_BAR_BOTTOM_LINES): New macros. Each pair returns the tool bar dimensions only if the tool bar position is set appropriately. (FRAME_TOP_MARGIN, FRAME_TOP_MARGIN_HEIGHT): Only add tool bar height if it is placed at the top of the frame. (FRAME_BOTTOM_MARGIN, FRAME_BOTTOM_MARGIN_HEIGHT): Add ``bottom margins''. (FRAME_MARGINS, FRAME_MARGIN_HEIGHT): Move original margin macro here. (FRAME_PIXEL_HEIGHT_TO_TEXT_LINES): (FRAME_TEXT_TO_PIXEL_HEIGHT): (FRAME_PIXEL_TO_TEXT_HEIGHT): (FRAME_INNER_HEIGHT): Subtract both vertical margins. * src/frame.c (adjust_frame_size): Subtract both top and bottom margins to determine the inner height. (make_frame): Initialize `f->tool_bar_position' unconditionally. * src/dispnew.c (adjust_frame_glyphs_for_window_redisplay): Place internal tool bar on bottom if requested. * doc/lispref/frames.texi (Frame Layout): Describe the possibility of the tool bar being placed below the inner area of the frame. (Layout Parameters): Describe that `tool-bar-position' is now supported almost everywhere.
2023-05-13Fix detection of tab bar windows on PGTKPo Lu
* src/dispnew.c (adjust_frame_glyphs_for_window_redisplay): Adjust commentary. * src/pgtkfns.c (pgtk_set_doc_edited): Remove unused function. * src/pgtkterm.c (pgtk_clear_under_internal_border): Clean up X related code. * src/pgtkterm.h: Update prototypes. * src/window.h: Define WIDNOW_TAB_BAR_P on PGTK. (bug#63472)
2023-01-08; * src/pgtkfns.c (parse_resource_key): Use recursive schema lookupTad Fisher
XDG_DATA_DIRS may consist of multiple directories, and g_settings_schema_source_get_default composes these into a recursive schema source. One must pass TRUE to g_settings_schema_source_lookup, otherwise only the first directory in XDG_DATA_DIRS is searched. It follows that in the case that the directory containing the compiled GSettings schema for Emacs is not the first in XDG_DATA_DIRS, parse_resource_key will not accept any resource key, which causes pgtk_get_defaults_value and pgtk_set_defaults_value to fail. This impacts systems that compose multiple GSettings schema sources via XDG_DATA_DIRS, such Flatpak and NixOS. Supporting GIO documentation for g_settings_schema_source_get_default: > The returned source may actually consist of multiple schema sources > from different directories, depending on which directories were given > in `XDG_DATA_DIRS` and `GSETTINGS_SCHEMA_DIR`. For this reason, all > lookups performed against the default source should probably be done > recursively. Bug#60565 Copyright-paperwork-exempt: yes
2023-01-02Fix shrinking of the tab-barEli Zaretskii
* src/haikufns.c (haiku_change_tab_bar_height): * src/pgtkfns.c (pgtk_change_tab_bar_height): * src/nsfns.m (ns_change_tab_bar_height): * src/w32fns.c (w32_change_tab_bar_height): * src/xfns.c (x_change_tab_bar_height): Don't let the number of tab-bar lines degenerate to zero due to integer division. (Bug#60210)
2023-01-01; Add 2023 to copyright years.Eli Zaretskii
2022-11-19Fix automatic DPI adjustment and add workarounds for some systemsPo Lu
* lisp/faces.el (x-create-frame-with-faces): New field `delayed-font'. Set the `font-parameter' property to `font' in the given parameter list after face-set-after-frame-default is called. * src/fontset.c (Fset_fontset_font): Avoid changing `font-parameter' with the call to Fmodify_frame_parameters. * src/frame.c (gui_set_frame_parameters_1): New function. Factor out gui_set_frame_parameters here, and add an argument DEFAULT_PARAMETER. If the `font' parameter is set, and `default_parameter' is not, then set the `font-parameter' frame parameter to the `font' parameter as well, to keep track of which user-specified `font' frame parameter set the default face's font on the frame. (gui_set_frame_parameters): Call gui_set_frame_parameters_1 with new arg set to false. (gui_set_font): Remove broken implementation of `font-parameter'. (gui_default_parameter): If the default value was used, then call gui_set_frame_parameters_1 with the new argument set to false. This is because no font was specified as a frame parameter by the user, so Freconsider_frame_fonts is free to do anything it wants. (Freconsider_frame_fonts): If `font-parameter' is set, then use it. (syms_of_frame): New defsym Qfont_parameter. * src/frame.h: Update prototypes. * src/haikuterm.c (haiku_default_font_parameter): * src/pgtkfns.c (pgtk_default_font_parameter): * src/w32fns.c (w32_default_font_parameter): Stop setting `font-parameter' here. This code resulted in decades of automatic font rescaling not working correctly. * src/xfaces.c (set_font_frame_param): Clear the `font-parameter' frame parameter. (Finternal_merge_in_global_face): * src/xfns.c (x_default_font_parameter): Avoid changing `font-parameter' in response to changes to face attributes. * src/xsettings.c (apply_xft_settings): Add workaround for Cairo. (bug#59371, bug#59347, bug#59283, bug#59271, bug#59285, bug#59306.)
2022-11-16Fix calculation of tab bar lines during automatic height adjustmentPo Lu
* src/haikufns.c (haiku_change_tab_bar_height): * src/nsfns.m (ns_change_tab_bar_height): * src/pgtkfns.c (pgtk_change_tab_bar_height): * src/w32fns.c (w32_change_tab_bar_height): * src/xfns.c (x_change_tab_bar_height): Do not round tab bar height up. (bug#59285, bug#59271)
2022-09-09Delete variable window-system-version obsolete since 24.3Stefan Kangas
* lisp/frame.el (window-system-version): Delete variable. * src/dispnew.c (syms_of_display) <Vwindow_system_version>: Delete DEFVAR, obsolete since 24.3. (init_display_interactive, syms_of_display_for_pdumper): * src/msdos.c (internal_terminal_init): * src/nsterm.m (ns_term_init): * src/pgtkfns.c (pgtk_display_info_for_name): * src/w32fns.c (w32_display_info_for_name, Fx_open_connection): * src/xfns.c (x_display_info_for_name, Fx_open_connection): Don't set above deleted variable. * admin/admin.el (set-version): Don't update above deleted variable in msdos.c. * lisp/textmodes/artist.el (artist-submit-bug-report): Don't use above deleted variable.
2022-08-01Make frame synchronization a frame parameterPo Lu
* doc/lispref/frames.texi (Management Parameters): Document `use-frame-synchronization'. * etc/NEWS: Update entry. * src/frame.c (frame_parms): New frame parameter `use-frame-synchronization'. (syms_of_frame): New defsym. * src/haikufns.c (haiku_frame_parm_handlers): * src/nsfns.m (ns_frame_parm_handlers): * src/pgtkfns.c (pgtk_frame_parm_handlers): * src/w32fns.c (w32_frame_parm_handlers): Update frame param handlers correctly. * src/xfns.c (x_set_use_frame_synchronization): New function. (Fx_create_frame): Set default value of said parameter. (x_frame_parm_handlers): Add handler. * src/xterm.c (x_sync_wait_for_frame_drawn_event): Clear parameter if sync fails.
2022-07-21Apply tooltip assertions to all instances of x-show-tipPo Lu
* src/haikufns.c (Fx_show_tip): (syms_of_haikufns): * src/nsfns.m (Fx_show_tip): (syms_of_nsfns): * src/pgtkfns.c (Fx_show_tip): (syms_of_pgtkfns): * src/xfns.c (Fx_show_tip): (syms_of_xfns): Add assertion and adjust default values.
2022-07-02Fix repeated "the"Lele Gaifax
* configure.ac (EMACS_CONFIG_FEATURES): * etc/NEWS: * lisp/dnd.el (dnd-begin-text-drag): * src/pgtkfns.c (Fx_display_mm_height, Fx_display_mm_width): (Fx_display_backing_store, Fx_display_visual_class): * src/xterm.c: Fix repeated "the". (Bug#56341) Copyright-paperwork-exempt: yes
2022-06-16Use BASE_EQ instead of EQ where obviously safeMattias Engdegård
* src/alloc.c (deadp): * src/buffer.c (reset_buffer_local_variables, candidate_buffer) (Fkill_buffer, Fbuffer_swap_text, Fmake_overlay, Fmove_overlay): * src/callint.c (Fcall_interactively): * src/coding.c (decode_coding_object, encode_coding_object) (code_convert_region, Ffind_operation_coding_system): * src/comp.c (Fcomp_el_to_eln_rel_filename): * src/conf_post.h (RE_TRANSLATE_P): * src/data.c (Fkill_local_variable, Fash, expt_integer): * src/dired.c (file_name_completion): * src/dispnew.c (set_window_cursor_after_update, update_frame_1) (Fframe_or_buffer_changed_p): * src/doc.c (Fdocumentation, Fdocumentation_property) (default_to_grave_quoting_style): * src/editfns.c (Fconstrain_to_field, save_excursion_save) (save_excursion_restore, Fngettext): * src/eval.c (Fautoload, un_autoload, specbind): * src/fileio.c (Fmake_temp_file_internal): * src/fns.c (string_char_to_byte, string_byte_to_char) (Fnthcdr, Fnreverse): * src/indent.c (vmotion): * src/inotify.c (add_watch): * src/keyboard.c (command_loop_1, read_char) (read_char_minibuf_menu_prompt): * src/lread.c (oblookup): * src/macfont.m (macfont_descriptor_entity, macfont_open): * src/minibuf.c (Finnermost_minibuffer_p, Ftry_completion) (Ftest_completion): * src/nsfns.m (ns_set_icon_name): * src/pdumper.c (dump_queue_dequeue): * src/pgtkfns.c (pgtk_set_icon_type, pgtk_set_icon_name): * src/process.c (Faccept_process_output): * src/textprop.c (set_text_properties): * src/w32fns.c (w32_set_icon_type, w32_set_icon_name): * src/w32select.c (validate_coding_system): * src/window.c (decode_next_window_args, window_loop) (save_window_save): * src/xdisp.c (wset_redisplay): * src/xfaces.c (Fx_family_fonts, resolve_face_name) (gui_supports_face_attributes_p): * src/xfns.c (x_set_icon_type, x_set_icon_name): * src/xselect.c (clean_local_selection_data): Use BASE_EQ instead of EQ where it is obvious that neither argument can be a symbol with properties or at least one argument is a non-symbol.
2022-06-12Use BASE_EQ when comparing with QunboundMattias Engdegård
Qunbound is uninterned and can therefore never be EQ to any symbol with position. * src/buffer.c (Fbuffer_local_value, buffer_lisp_local_variables) (buffer_local_variables_1): * src/bytecode.c (exec_byte_code): * src/comp.c (compile_function, Fcomp__compile_ctxt_to_file): * src/composite.c (composition_gstring_cache_clear_font): * src/data.c (Fboundp, Fsymbol_value, set_internal) (Fdefault_boundp, Fdefault_value, Fmake_variable_buffer_local): * src/emacs-module.c (module_global_reference_p): * src/eval.c (Fdefault_toplevel_value, defvar) (run_hook_with_args): * src/fns.c (hash_put, Fmaphash): * src/font.c (font_put_extra): * src/frame.c (gui_set_frame_parameters) (gui_frame_get_and_record_arg, gui_default_parameter) (gui_figure_window_size): * src/haikufns.c (get_geometry_from_preferences) (haiku_create_frame, haiku_create_tip_frame): * src/haikuterm.c (haiku_draw_text_decoration) (haiku_default_font_parameter): * src/json.c (lisp_to_json_nonscalar_1): * src/keymap.c (access_keymap_1, access_keymap, current_minor_maps): * src/lread.c (readevalloop, define_symbol): * src/minibuf.c (read_minibuf, Ftry_completion): (Fall_completions, Ftest_completion): * src/pgtkfns.c (pgtk_default_font_parameter, Fx_create_frame) (x_create_tip_frame): * src/pgtkselect.c (Fpgtk_own_selection_internal): * src/print.c (print): * src/profiler.c (evict_lower_half, record_backtrace): * src/terminal.c (create_terminal): * src/textprop.c (set_properties): * src/w32fns.c (my_create_window, w32_icon) (w32_default_font_parameter, Fx_create_frame) (w32_create_tip_frame): * src/w32term.c (w32_draw_glyph_string): * src/xdisp.c (handle_single_display_spec) (cursor_row_fully_visible_p, calc_pixel_width_or_height): * src/xfns.c (x_default_scroll_bar_color_parameter, x_icon_verify) (x_icon, x_default_font_parameter, Fx_create_frame) (x_create_tip_frame): * src/xselect.c (x_handle_selection_request): * src/xterm.c (x_draw_glyph_string, x_term_init): Use BASE_EQ instead of EQ when comparing with Qunbound.
2022-05-23Fix default child-frame-border-width on PGTKPo Lu
* src/pgtkfns.c (Fx_create_frame): Make default `child-frame-border-width' nil. (bug#55588)