Mercurial > hg > xemacs-beta
annotate src/frame-impl.h @ 1204:e22b0213b713
[xemacs-hg @ 2003-01-12 11:07:58 by michaels]
modules/ChangeLog:
2002-12-16 Ben Wing <ben@xemacs.org>
* postgresql/postgresql.c:
remove ifdef USE_KKCC.
src/ChangeLog:
2003-01-08 Mike Sperber <mike@xemacs.org>
* console.h (CDFW_CONSOLE): Don't lead to a crash if we're dealing
with a dead window/frame/device/console.
2002-12-20 Mike Sperber <mike@xemacs.org>
* ui-gtk.c: Fix typo from Ben's patch: emacs_ffi_data is a
typedef, not a struct. emacs_gtk_object_data is a typedef, not a
struct.
* gtk-glue.c (gdk_event_to_emacs_event): Fix typos from Ben's
patch: le -> emacs_event + rearrange the code.
* event-gtk.c (gtk_event_to_emacs_event): Fix typos from Ben's
patch: ..._UNDERLYING_GDK_EVENT -> ..._GDK_EVENT, ev -> key_event.
* device-gtk.c: Fix typo from Ben's patch: x_keysym_map_hash_table
-> x_keysym_map_hashtable.
2002-12-19 Mike Sperber <mike@xemacs.org>
* menubar-x.c (set_frame_menubar): Initialize protect_me field of
popup_data.
2002-12-16 Ben Wing <ben@xemacs.org>
Major cleanup of KKCC, etc.
KKCC, pdump-related:
-- descriptions are written for all objects. this required some
changes in the format of some objects, e.g. extents, popup-data,
coding system, lstream, lcrecord-list.
-- KKCC now handles weakness in markers, hash tables, elsewhere
correctly (formerly, you'd eventually get a stack overflow due
to endlessly expanding markers).
-- textual changes: lrecord_description -> memory_description,
struct_description -> sized_memory_description.
-- extensive comment describing descriptions and pdump.
-- redo XD_UNION so it works inline and change its format to provide
sufficient info for pdump. implement XD_UNION in pdump. also add
XD_UNION_DYNAMIC_SIZE, which works like XD_UNION except for when
auto-computing structure sizes.
-- add support for XD_INDIRECT in description offsets (used by
extents).
-- add support for "description maps", allowing for indirect
descriptions that are retrieved from an object at run-time. this
generalizes XD_CODING_SYSTEM_END, XD_SPECIFIER_END, etc., which
have now been eliminated.
-- add a fifth field "flags" to memory_description, to support flags
that can be specified for this particular line. Currently defined
flags are XD_FLAG_NO_KKCC (KKCC should ignore this entry; useful
for the weakness above in markers, etc.), XD_FLAG_NO_PDUMP (pdump
should ignore this entry), XD_FLAG_UNION_DEFAULT_ENTRY (in
union maps, this specifies a "default" entry for all remaining
values), and XD_FLAG_FREE_LISP_OBJECT (for use with lcrecord-lists).
-- clean up the kkcc-itis in events, so that the differences
between event data as separate objects and as a union are now
minimized to a small number of places. with the new XD_UNION, we
no longer need event data as separate objects, so this code is no
longer ifdef USE_KKCC, but instead ifdef EVENT_DATA_AS_OBJECTS,
not used by default. make sure that we explicitly free the
separate event data objects when no longer in use, to maintain the
invariant the event processing causes no consing.
-- also remove other USE_KKCC ifdefs when not necessary.
-- allow for KKCC compilation under MS Windows.
-- fix README.kkcc.
-- dump_add_root_object -> dump_add_root_lisp_object.
-- implement dump_add_root_block and use this to handle
dump_add_opaque.
-- factor out some code duplicated in kkcc and pdump.
Other allocation/object-related:
-- change various *slots.h so MARKED_SLOT() call no longer
includes semicolon.
-- free_marker() takes a Lisp_Object not a direct pointer.
-- make bit vectors lcrecords, like vectors, and eliminate code
that essentially duplicated the lcrecord handling.
-- additional asserts in FREE_FIXED_TYPE, formerly duplicated in
the various callers of this.
-- all lcrecord allocation functions now zero out the returned
lcrecords. unnecessary calls to zero_lcrecord removed. add long
comment describing these functions.
-- extract out process and coding system slots, like for buffers,
frames, etc.
-- lcrecords now set the type of items sitting on the free list to
lcrecord_type_free.
-- changes to the way that gap arrays are allocated, for kkcc's
benefit -- now, one single memory block with a stretchy array on
the end, instead of a separate block holding the array.
Error-checking-related:
-- now can compile with C++ under MS Windows. clean up compile errors
discovered that way. (a few were real problems)
-- add C++ error-checking code to verify problems with mismatched
GCPRO/UNGCPRO. (there were a few in the kkcc code.) add long
comment about how to catch insufficient GCPRO (yes, it's possible
using C++).
-- add debug_p4(), a simple object printer, when debug_print()
doesn't work.
-- add dp() and db() as short synonyms of debug_print(),
debug_backtrace().
-- `print' tries EXTREMELY hard to avoid core dumping when printing
when crashing or from debug_print(), and tries as hard as it
reasonably can in other situations.
-- Correct the message output upon crashing to be more up-to-date.
Event-related:
-- document event-matches-key-specifier-p better.
-- generalize the dispatch queues formerly duplicated in the
various event implementations. add event methods to drain pending
events. generalize and clean up QUIT handling, removing
event-specific quit processing. allow arbitrary keystrokes, not
just ASCII, to be the QUIT char. among other things, this should
fix some longstanding bugs in X quit handling. long comment
describing the various event queues.
-- implement delaying of XFlush() if there are pending expose events.
SOMEONE PLEASE TRY THIS OUT.
-- Fix `xemacs -batch -l dunnet' under Cygwin. Try to fix under
MS Windows but not quite there yet.
Other:
-- class -> class_ and no more C++ games with this item.
new -> new_ in the lwlib code, so far not elsewhere.
-- use `struct htentry' not `struct hentry' in elhash.c to avoid
debugger confusion with hash.c.
-- new macros ALIST_LOOP_3, ALIST_LOOP_4.
* README.kkcc:
* alloc.c:
* alloc.c (deadbeef_memory):
* alloc.c (allocate_lisp_storage):
* alloc.c (copy_lisp_object):
* alloc.c (ALLOCATE_FIXED_TYPE_1):
* alloc.c (FREE_FIXED_TYPE):
* alloc.c (make_vector_internal):
* alloc.c (make_bit_vector_internal):
* alloc.c (make_key_data):
* alloc.c (make_button_data):
* alloc.c (make_motion_data):
* alloc.c (make_process_data):
* alloc.c (make_timeout_data):
* alloc.c (make_magic_data):
* alloc.c (make_magic_eval_data):
* alloc.c (make_eval_data):
* alloc.c (make_misc_user_data):
* alloc.c (struct string_chars_block):
* alloc.c (mark_lcrecord_list):
* alloc.c (make_lcrecord_list):
* alloc.c (alloc_managed_lcrecord):
* alloc.c (free_managed_lcrecord):
* alloc.c (alloc_automanaged_lcrecord):
* alloc.c (staticpro_1):
* alloc.c (staticpro):
* alloc.c (lispdesc_indirect_count_1):
* alloc.c (lispdesc_indirect_description_1):
* alloc.c (lispdesc_one_description_line_size):
* alloc.c (lispdesc_structure_size):
* alloc.c (mark_object_maybe_checking_free):
* alloc.c (mark_with_description):
* alloc.c (mark_struct_contents):
* alloc.c (mark_object):
* alloc.c (tick_lcrecord_stats):
* alloc.c (free_cons):
* alloc.c (free_key_data):
* alloc.c (free_button_data):
* alloc.c (free_motion_data):
* alloc.c (free_process_data):
* alloc.c (free_timeout_data):
* alloc.c (free_magic_data):
* alloc.c (free_magic_eval_data):
* alloc.c (free_eval_data):
* alloc.c (free_misc_user_data):
* alloc.c (free_marker):
* alloc.c (compact_string_chars):
* alloc.c (gc_sweep):
* alloc.c (garbage_collect_1):
* alloc.c (Fgarbage_collect):
* alloc.c (common_init_alloc_early):
* alloc.c (init_alloc_early):
* alloc.c (init_alloc_once_early):
* buffer.c:
* buffer.c (mark_buffer):
* buffer.c (MARKED_SLOT):
* buffer.c (cleanup_buffer_undo_lists):
* buffer.c (Fget_file_buffer):
* buffer.h (MARKED_SLOT):
* bufslots.h:
* bytecode.c:
* callint.c:
* casetab.c:
* chartab.c:
* chartab.c (symbol_to_char_table_type):
* cmdloop.c:
* cmdloop.c (Fcommand_loop_1):
* config.h.in (new):
* conslots.h:
* console-gtk-impl.h (struct gtk_frame):
* console-impl.h:
* console-impl.h (struct console):
* console-impl.h (MARKED_SLOT):
* console-impl.h (CONSOLE_QUIT_EVENT):
* console-msw-impl.h (XM_BUMPQUEUE):
* console-msw.c (write_string_to_mswindows_debugging_output):
* console-msw.h:
* console-stream-impl.h:
* console-stream-impl.h (struct stream_console):
* console-stream.c:
* console-stream.c (stream_init_console):
* console-stream.h:
* console-tty.c:
* console-tty.h:
* console-x.h:
* console.c:
* console.c (mark_console):
* console.c (MARKED_SLOT):
* console.c (allocate_console):
* console.c (get_console_variant):
* console.c (create_console):
* console.c (delete_console_internal):
* console.c (Fset_input_mode):
* console.c (Fcurrent_input_mode):
* console.c (common_init_complex_vars_of_console):
* console.h:
* console.h (console_variant):
* console.h (device_metrics):
* data.c:
* data.c (Faref):
* data.c (Faset):
* data.c (decode_weak_list_type):
* database.c:
* debug.c (xemacs_debug_loop):
* debug.c (FROB):
* debug.c (Fadd_debug_class_to_check):
* debug.c (Fdelete_debug_class_to_check):
* debug.c (Fset_debug_classes_to_check):
* debug.c (Fset_debug_class_types_to_check):
* debug.c (Fdebug_types_being_checked):
* debug.h (DASSERT):
* device-gtk.c:
* device-impl.h (struct device):
* device-impl.h (MARKED_SLOT):
* device-msw.c:
* device-x.c:
* device-x.c (x_init_device_class):
* device-x.c (x_comp_visual_info):
* device-x.c (x_try_best_visual_class):
* device-x.c (x_init_device):
* device-x.c (construct_name_list):
* device-x.c (x_get_resource_prefix):
* device-x.c (Fx_get_resource):
* device-x.c (Fx_display_visual_class):
* device.c:
* device.c (MARKED_SLOT):
* device.c (allocate_device):
* device.c (Fmake_device):
* device.c (delete_device_internal):
* device.c (Fset_device_class):
* device.h:
* devslots.h:
* devslots.h (MARKED_SLOT):
* dialog-msw.c:
* dired-msw.c (mswindows_ls_sort_fcn):
* dired-msw.c (mswindows_get_files):
* dired-msw.c (mswindows_format_file):
* doprnt.c (parse_doprnt_spec):
* dumper.c:
* dumper.c (struct):
* dumper.c (dump_add_root_block):
* dumper.c (dump_add_root_struct_ptr):
* dumper.c (dump_add_root_lisp_object):
* dumper.c (pdump_struct_list_elt):
* dumper.c (pdump_get_entry_list):
* dumper.c (pdump_backtrace):
* dumper.c (pdump_bump_depth):
* dumper.c (pdump_register_sub):
* dumper.c (pdump_register_object):
* dumper.c (pdump_register_struct_contents):
* dumper.c (pdump_register_struct):
* dumper.c (pdump_store_new_pointer_offsets):
* dumper.c (pdump_dump_data):
* dumper.c (pdump_reloc_one):
* dumper.c (pdump_allocate_offset):
* dumper.c (pdump_scan_by_alignment):
* dumper.c (pdump_dump_root_blocks):
* dumper.c (pdump_dump_rtables):
* dumper.c (pdump_dump_root_lisp_objects):
* dumper.c (pdump):
* dumper.c (pdump_load_finish):
* dumper.c (pdump_file_get):
* dumper.c (pdump_resource_get):
* dumper.c (pdump_load):
* editfns.c (save_excursion_restore):
* editfns.c (user_login_name):
* editfns.c (save_restriction_restore):
* elhash.c:
* elhash.c (htentry):
* elhash.c (struct Lisp_Hash_Table):
* elhash.c (HTENTRY_CLEAR_P):
* elhash.c (LINEAR_PROBING_LOOP):
* elhash.c (check_hash_table_invariants):
* elhash.c (mark_hash_table):
* elhash.c (hash_table_equal):
* elhash.c (print_hash_table_data):
* elhash.c (free_hentries):
* elhash.c (make_general_lisp_hash_table):
* elhash.c (decode_hash_table_weakness):
* elhash.c (decode_hash_table_test):
* elhash.c (Fcopy_hash_table):
* elhash.c (resize_hash_table):
* elhash.c (pdump_reorganize_hash_table):
* elhash.c (find_htentry):
* elhash.c (Fgethash):
* elhash.c (Fputhash):
* elhash.c (remhash_1):
* elhash.c (Fremhash):
* elhash.c (Fclrhash):
* elhash.c (copy_compress_hentries):
* elhash.c (elisp_maphash_unsafe):
* elhash.c (finish_marking_weak_hash_tables):
* elhash.c (prune_weak_hash_tables):
* elhash.h:
* emacs.c:
* emacs.c (main_1):
* emacs.c (main):
* emacs.c (shut_down_emacs):
* emodules.h (dump_add_root_lisp_object):
* eval.c:
* eval.c (unwind_to_catch):
* eval.c (maybe_signal_error_1):
* eval.c (maybe_signal_continuable_error_1):
* eval.c (maybe_signal_error):
* eval.c (maybe_signal_continuable_error):
* eval.c (maybe_signal_error_2):
* eval.c (maybe_signal_continuable_error_2):
* eval.c (maybe_signal_ferror):
* eval.c (maybe_signal_continuable_ferror):
* eval.c (maybe_signal_ferror_with_frob):
* eval.c (maybe_signal_continuable_ferror_with_frob):
* eval.c (maybe_syntax_error):
* eval.c (maybe_sferror):
* eval.c (maybe_invalid_argument):
* eval.c (maybe_invalid_constant):
* eval.c (maybe_invalid_operation):
* eval.c (maybe_invalid_change):
* eval.c (maybe_invalid_state):
* eval.c (Feval):
* eval.c (call_trapping_problems):
* eval.c (call_with_suspended_errors):
* eval.c (warn_when_safe_lispobj):
* eval.c (warn_when_safe):
* eval.c (vars_of_eval):
* event-Xt.c:
* event-Xt.c (maybe_define_x_key_as_self_inserting_character):
* event-Xt.c (x_to_emacs_keysym):
* event-Xt.c (x_event_to_emacs_event):
* event-Xt.c (emacs_Xt_enqueue_focus_event):
* event-Xt.c (emacs_Xt_format_magic_event):
* event-Xt.c (emacs_Xt_compare_magic_event):
* event-Xt.c (emacs_Xt_hash_magic_event):
* event-Xt.c (emacs_Xt_handle_magic_event):
* event-Xt.c (Xt_timeout_to_emacs_event):
* event-Xt.c (Xt_process_to_emacs_event):
* event-Xt.c (signal_special_Xt_user_event):
* event-Xt.c (emacs_Xt_next_event):
* event-Xt.c (emacs_Xt_event_handler):
* event-Xt.c (emacs_Xt_drain_queue):
* event-Xt.c (emacs_Xt_event_pending_p):
* event-Xt.c (check_if_pending_expose_event):
* event-Xt.c (reinit_vars_of_event_Xt):
* event-Xt.c (vars_of_event_Xt):
* event-gtk.c:
* event-gtk.c (IS_MODIFIER_KEY):
* event-gtk.c (emacs_gtk_format_magic_event):
* event-gtk.c (emacs_gtk_compare_magic_event):
* event-gtk.c (emacs_gtk_hash_magic_event):
* event-gtk.c (emacs_gtk_handle_magic_event):
* event-gtk.c (gtk_to_emacs_keysym):
* event-gtk.c (gtk_timeout_to_emacs_event):
* event-gtk.c (gtk_process_to_emacs_event):
* event-gtk.c (dragndrop_data_received):
* event-gtk.c (signal_special_gtk_user_event):
* event-gtk.c (emacs_gtk_next_event):
* event-gtk.c (gtk_event_to_emacs_event):
* event-gtk.c (generic_event_handler):
* event-gtk.c (emacs_shell_event_handler):
* event-gtk.c (emacs_gtk_drain_queue):
* event-gtk.c (emacs_gtk_event_pending_p):
* event-gtk.c (reinit_vars_of_event_gtk):
* event-gtk.c (vars_of_event_gtk):
* event-msw.c:
* event-msw.c (struct winsock_stream):
* event-msw.c (winsock_reader):
* event-msw.c (winsock_writer):
* event-msw.c (mswindows_enqueue_dispatch_event):
* event-msw.c (mswindows_enqueue_misc_user_event):
* event-msw.c (mswindows_enqueue_magic_event):
* event-msw.c (mswindows_enqueue_process_event):
* event-msw.c (mswindows_enqueue_mouse_button_event):
* event-msw.c (mswindows_enqueue_keypress_event):
* event-msw.c (mswindows_dequeue_dispatch_event):
* event-msw.c (emacs_mswindows_drain_queue):
* event-msw.c (mswindows_need_event_in_modal_loop):
* event-msw.c (mswindows_need_event):
* event-msw.c (mswindows_wm_timer_callback):
* event-msw.c (dde_eval_string):
* event-msw.c (Fdde_alloc_advise_item):
* event-msw.c (mswindows_dde_callback):
* event-msw.c (mswindows_wnd_proc):
* event-msw.c (remove_timeout_mapper):
* event-msw.c (emacs_mswindows_remove_timeout):
* event-msw.c (emacs_mswindows_event_pending_p):
* event-msw.c (emacs_mswindows_format_magic_event):
* event-msw.c (emacs_mswindows_compare_magic_event):
* event-msw.c (emacs_mswindows_hash_magic_event):
* event-msw.c (emacs_mswindows_handle_magic_event):
* event-msw.c (emacs_mswindows_select_console):
* event-msw.c (emacs_mswindows_unselect_console):
* event-msw.c (reinit_vars_of_event_mswindows):
* event-msw.c (vars_of_event_mswindows):
* event-stream.c:
* event-stream.c (mark_command_builder):
* event-stream.c (reset_command_builder_event_chain):
* event-stream.c (allocate_command_builder):
* event-stream.c (copy_command_builder):
* event-stream.c (command_builder_append_event):
* event-stream.c (event_stream_event_pending_p):
* event-stream.c (event_stream_force_event_pending):
* event-stream.c (maybe_read_quit_event):
* event-stream.c (event_stream_drain_queue):
* event-stream.c (remove_quit_p_event):
* event-stream.c (event_stream_quit_p):
* event-stream.c (echo_key_event):
* event-stream.c (maybe_kbd_translate):
* event-stream.c (execute_help_form):
* event-stream.c (event_stream_generate_wakeup):
* event-stream.c (enqueue_dispatch_event):
* event-stream.c (enqueue_magic_eval_event):
* event-stream.c (Fenqueue_eval_event):
* event-stream.c (enqueue_misc_user_event):
* event-stream.c (enqueue_misc_user_event_pos):
* event-stream.c (next_event_internal):
* event-stream.c (Fnext_event):
* event-stream.c (Faccept_process_output):
* event-stream.c (execute_internal_event):
* event-stream.c (munge_keymap_translate):
* event-stream.c (command_builder_find_leaf_no_mule_processing):
* event-stream.c (command_builder_find_leaf):
* event-stream.c (lookup_command_event):
* event-stream.c (is_scrollbar_event):
* event-stream.c (execute_command_event):
* event-stream.c (Fdispatch_event):
* event-stream.c (Fread_key_sequence):
* event-stream.c (dribble_out_event):
* event-stream.c (vars_of_event_stream):
* event-tty.c (tty_timeout_to_emacs_event):
* event-tty.c (emacs_tty_next_event):
* event-tty.c (emacs_tty_drain_queue):
* event-tty.c (reinit_vars_of_event_tty):
* event-unixoid.c:
* event-unixoid.c (find_tty_or_stream_console_from_fd):
* event-unixoid.c (read_event_from_tty_or_stream_desc):
* event-unixoid.c (drain_tty_devices):
* event-unixoid.c (poll_fds_for_input):
* events.c:
* events.c (deinitialize_event):
* events.c (zero_event):
* events.c (mark_event):
* events.c (print_event_1):
* events.c (print_event):
* events.c (event_equal):
* events.c (event_hash):
* events.c (Fmake_event):
* events.c (Fdeallocate_event):
* events.c (Fcopy_event):
* events.c (map_event_chain_remove):
* events.c (character_to_event):
* events.c (event_to_character):
* events.c (Fevent_to_character):
* events.c (format_event_object):
* events.c (upshift_event):
* events.c (downshift_event):
* events.c (event_upshifted_p):
* events.c (Fevent_live_p):
* events.c (Fevent_type):
* events.c (Fevent_timestamp):
* events.c (CHECK_EVENT_TYPE):
* events.c (CHECK_EVENT_TYPE2):
* events.c (CHECK_EVENT_TYPE3):
* events.c (Fevent_key):
* events.c (Fevent_button):
* events.c (Fevent_modifier_bits):
* events.c (event_x_y_pixel_internal):
* events.c (event_pixel_translation):
* events.c (Fevent_process):
* events.c (Fevent_function):
* events.c (Fevent_object):
* events.c (Fevent_properties):
* events.c (syms_of_events):
* events.c (vars_of_events):
* events.h:
* events.h (struct event_stream):
* events.h (struct Lisp_Key_Data):
* events.h (KEY_DATA_KEYSYM):
* events.h (EVENT_KEY_KEYSYM):
* events.h (struct Lisp_Button_Data):
* events.h (EVENT_BUTTON_BUTTON):
* events.h (struct Lisp_Motion_Data):
* events.h (EVENT_MOTION_X):
* events.h (struct Lisp_Process_Data):
* events.h (EVENT_PROCESS_PROCESS):
* events.h (struct Lisp_Timeout_Data):
* events.h (EVENT_TIMEOUT_INTERVAL_ID):
* events.h (struct Lisp_Eval_Data):
* events.h (EVENT_EVAL_FUNCTION):
* events.h (struct Lisp_Misc_User_Data):
* events.h (EVENT_MISC_USER_FUNCTION):
* events.h (struct Lisp_Magic_Eval_Data):
* events.h (EVENT_MAGIC_EVAL_INTERNAL_FUNCTION):
* events.h (struct Lisp_Magic_Data):
* events.h (EVENT_MAGIC_UNDERLYING):
* events.h (EVENT_MAGIC_GDK_EVENT):
* events.h (struct Lisp_Event):
* events.h (XEVENT_CHANNEL):
* events.h (SET_EVENT_TIMESTAMP_ZERO):
* events.h (SET_EVENT_CHANNEL):
* events.h (SET_EVENT_NEXT):
* events.h (XSET_EVENT_TYPE):
* events.h (struct command_builder):
* extents.c:
* extents.c (gap_array_adjust_markers):
* extents.c (gap_array_recompute_derived_values):
* extents.c (gap_array_move_gap):
* extents.c (gap_array_make_gap):
* extents.c (gap_array_insert_els):
* extents.c (gap_array_delete_els):
* extents.c (gap_array_make_marker):
* extents.c (gap_array_delete_marker):
* extents.c (gap_array_move_marker):
* extents.c (make_gap_array):
* extents.c (free_gap_array):
* extents.c (extent_list_num_els):
* extents.c (extent_list_insert):
* extents.c (mark_extent_auxiliary):
* extents.c (allocate_extent_auxiliary):
* extents.c (decode_extent_at_flag):
* extents.c (verify_extent_mapper):
* extents.c (symbol_to_glyph_layout):
* extents.c (syms_of_extents):
* faces.c:
* file-coding.c:
* file-coding.c (struct_detector_category_description =):
* file-coding.c (detector_category_dynarr_description_1):
* file-coding.c (struct_detector_description =):
* file-coding.c (detector_dynarr_description_1):
* file-coding.c (MARKED_SLOT):
* file-coding.c (mark_coding_system):
* file-coding.c (coding_system_extra_description_map):
* file-coding.c (coding_system_description):
* file-coding.c (allocate_coding_system):
* file-coding.c (symbol_to_eol_type):
* file-coding.c (Fcoding_system_aliasee):
* file-coding.c (set_coding_stream_coding_system):
* file-coding.c (struct convert_eol_coding_system):
* file-coding.c (struct undecided_coding_system):
* file-coding.c (undecided_mark_coding_stream):
* file-coding.c (coding_category_symbol_to_id):
* file-coding.c (struct gzip_coding_system):
* file-coding.c (coding_system_type_create):
* file-coding.h:
* file-coding.h (struct Lisp_Coding_System):
* file-coding.h (CODING_SYSTEM_SLOT_DECLARATION):
* file-coding.h (coding_system_variant):
* file-coding.h (struct coding_system_methods):
* file-coding.h (DEFINE_CODING_SYSTEM_TYPE_WITH_DATA):
* file-coding.h (INITIALIZE_CODING_SYSTEM_TYPE_WITH_DATA):
* file-coding.h (struct coding_stream):
* fileio.c (Fsubstitute_in_file_name):
* floatfns.c:
* fns.c:
* fns.c (base64_encode_1):
* frame-gtk.c:
* frame-gtk.c (Fgtk_start_drag_internal):
* frame-impl.h (struct frame):
* frame-impl.h (MARKED_SLOT):
* frame-msw.c:
* frame-x.c:
* frame-x.c (Fcde_start_drag_internal):
* frame-x.c (Foffix_start_drag_internal):
* frame.c:
* frame.c (MARKED_SLOT):
* frame.c (allocate_frame_core):
* frame.c (delete_frame_internal):
* frame.c (Fmouse_position_as_motion_event):
* frameslots.h:
* frameslots.h (MARKED_SLOT_ARRAY):
* free-hook.c:
* glyphs-msw.c (mswindows_widget_instantiate):
* glyphs-x.c:
* glyphs-x.c (convert_EImage_to_XImage):
* glyphs.c:
* glyphs.c (process_image_string_instantiator):
* glyphs.c (mark_image_instance):
* glyphs.c (allocate_image_instance):
* glyphs.c (unmap_subwindow):
* glyphs.c (map_subwindow):
* glyphs.c (syms_of_glyphs):
* glyphs.c (specifier_type_create_image):
* glyphs.h:
* glyphs.h (struct text_image_instance):
* glyphs.h (struct Lisp_Image_Instance):
* gmalloc.c:
* gmalloc.c ("C"):
* gpmevent.c (Freceive_gpm_event):
* gpmevent.c (gpm_next_event_cb):
* gpmevent.c (vars_of_gpmevent):
* gtk-glue.c (gdk_event_to_emacs_event):
* gtk-xemacs.c (gtk_xemacs_class_init):
* gui-msw.c:
* gui-msw.c (mswindows_handle_gui_wm_command):
* gui-msw.c (mswindows_translate_menu_or_dialog_item):
* gui-x.c:
* gui-x.c (mark_popup_data):
* gui-x.c (snarf_widget_value_mapper):
* gui-x.c (gcpro_popup_callbacks):
* gui-x.c (ungcpro_popup_callbacks):
* gui-x.c (free_popup_widget_value_tree):
* gui-x.c (popup_selection_callback):
* gui-x.h:
* gui-x.h (struct popup_data):
* gui.c:
* gui.c (allocate_gui_item):
* gutter.c (decode_gutter_position):
* hash.c (NULL_ENTRY):
* indent.c (vmotion_1):
* indent.c (vmotion_pixels):
* input-method-motif.c (res):
* input-method-xlib.c (IMInstantiateCallback):
* input-method-xlib.c (XIM_init_device):
* input-method-xlib.c (res):
* intl-encap-win32.c:
* intl-encap-win32.c (qxeSHGetDataFromIDList):
* intl-win32.c:
* intl-win32.c (mswindows_multibyte_cp_type):
* intl-win32.c (struct mswindows_multibyte_coding_system):
* keymap.c:
* keymap.c (make_key_description):
* keymap.c (keymap_store):
* keymap.c (get_keyelt):
* keymap.c (keymap_lookup_1):
* keymap.c (define_key_parser):
* keymap.c (key_desc_list_to_event):
* keymap.c (event_matches_key_specifier_p):
* keymap.c (meta_prefix_char_p):
* keymap.c (ensure_meta_prefix_char_keymapp):
* keymap.c (Fdefine_key):
* keymap.c (struct raw_lookup_key_mapper_closure):
* keymap.c (raw_lookup_key):
* keymap.c (raw_lookup_key_mapper):
* keymap.c (lookup_keys):
* keymap.c (lookup_events):
* keymap.c (Flookup_key):
* keymap.c (struct map_keymap_unsorted_closure):
* keymap.c (map_keymap_unsorted_mapper):
* keymap.c (map_keymap_sorted):
* keymap.c (map_keymap_mapper):
* keymap.c (map_keymap):
* keymap.c (accessible_keymaps_mapper_1):
* keymap.c (Faccessible_keymaps):
* keymap.c (Fsingle_key_description):
* keymap.c (raw_keys_to_keys):
* keymap.c (format_raw_keys):
* keymap.c (where_is_recursive_mapper):
* keymap.c (where_is_internal):
* keymap.c (describe_map_mapper_shadow_search):
* keymap.c (keymap_lookup_inherited_mapper):
* keymap.c (describe_map_mapper):
* keymap.h (event_matches_key_specifier_p):
* lisp.h:
* lisp.h (this):
* lisp.h (RETURN_NOT_REACHED):
* lisp.h (struct Lisp_Vector):
* lisp.h (struct Lisp_Bit_Vector):
* lisp.h (UNGCPRO_1):
* lisp.h (NUNGCPRO):
* lisp.h (NNUNGCPRO):
* lisp.h (DECLARE_INLINE_HEADER):
* lrecord.h:
* lrecord.h (struct lrecord_header):
* lrecord.h (struct lcrecord_header):
* lrecord.h (lrecord_type):
* lrecord.h (struct lrecord_implementation):
* lrecord.h (RECORD_DUMPABLE):
* lrecord.h (memory_description_type):
* lrecord.h (data_description_entry_flags):
* lrecord.h (struct memory_description):
* lrecord.h (struct sized_memory_description):
* lrecord.h (XD_INDIRECT):
* lrecord.h (XD_IS_INDIRECT):
* lrecord.h (XD_DYNARR_DESC):
* lrecord.h (DEFINE_BASIC_LRECORD_IMPLEMENTATION):
* lrecord.h (MAKE_LRECORD_IMPLEMENTATION):
* lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION):
* lrecord.h (alloc_lcrecord_type):
* lstream.c:
* lstream.c (Lstream_new):
* lstream.c (lisp_buffer_marker):
* lstream.h:
* lstream.h (lstream_implementation):
* lstream.h (DEFINE_LSTREAM_IMPLEMENTATION):
* lstream.h (DEFINE_LSTREAM_IMPLEMENTATION_WITH_DATA):
* marker.c:
* marker.c (copy_marker_1):
* mem-limits.h:
* menubar-gtk.c:
* menubar-gtk.c (gtk_popup_menu):
* menubar-msw.c:
* menubar-msw.c (mswindows_popup_menu):
* menubar-x.c (make_dummy_xbutton_event):
* menubar-x.c (command_builder_operate_menu_accelerator):
* menubar-x.c (menu_accelerator_safe_compare):
* menubar-x.c (menu_accelerator_safe_mod_compare):
* mule-charset.c:
* mule-charset.c (make_charset):
* mule-charset.c (Fcharset_property):
* mule-coding.c:
* mule-coding.c (ccs_description_1):
* mule-coding.c (ccs_description =):
* mule-coding.c (ccsd_description_1):
* mule-coding.c (ccsd_description =):
* nt.c (getpwnam):
* nt.c (init_mswindows_environment):
* nt.c (get_cached_volume_information):
* nt.c (mswindows_is_executable):
* nt.c (read_unc_volume):
* nt.c (mswindows_access):
* nt.c (mswindows_link):
* nt.c (mswindows_fstat):
* nt.c (mswindows_stat):
* nt.c (mswindows_executable_type):
* nt.c (Fmswindows_short_file_name):
* nt.c (Fmswindows_long_file_name):
* objects-impl.h (struct Lisp_Color_Instance):
* objects-impl.h (struct Lisp_Font_Instance):
* objects-tty.c:
* objects-x.c (allocate_nearest_color):
* objects.c:
* objects.c (Fmake_color_instance):
* objects.c (Fmake_font_instance):
* objects.c (font_instantiate):
* opaque.c:
* opaque.c (make_opaque):
* opaque.c (make_opaque_ptr):
* opaque.c (reinit_opaque_early):
* opaque.c (init_opaque_once_early):
* print.c:
* print.c (printing_badness):
* print.c (printing_major_badness):
* print.c (print_internal):
* print.c (debug_p4):
* print.c (dp):
* print.c (debug_backtrace):
* process-nt.c (nt_create_process):
* process-nt.c (get_internet_address):
* process-unix.c:
* process-unix.c (struct unix_process_data):
* process-unix.c (get_internet_address):
* process-unix.c (unix_alloc_process_data):
* process-unix.c (unix_create_process):
* process-unix.c (try_to_initialize_subtty):
* process-unix.c (unix_kill_child_process):
* process-unix.c (process_type_create_unix):
* process.c:
* process.c (mark_process):
* process.c (MARKED_SLOT):
* process.c (make_process_internal):
* process.c (Fprocess_tty_name):
* process.c (decode_signal):
* process.h:
* procimpl.h:
* procimpl.h (struct process_methods):
* procimpl.h (struct Lisp_Process):
* rangetab.c:
* realpath.c (readlink_and_correct_case):
* redisplay-x.c (x_window_output_end):
* redisplay-x.c (x_redraw_exposed_area):
* redisplay-x.c (x_clear_frame):
* redisplay.c:
* redisplay.h:
* redisplay.h (struct rune_dglyph):
* redisplay.h (struct rune):
* scrollbar.c:
* scrollbar.c (create_scrollbar_instance):
* specifier.c:
* specifier.c (specifier_empty_extra_description_1):
* specifier.c (make_specifier_internal):
* specifier.c (decode_locale_type):
* specifier.c (decode_how_to_add_specification):
* specifier.h:
* specifier.h (struct specifier_methods):
* specifier.h (DEFINE_SPECIFIER_TYPE_WITH_DATA):
* specifier.h (INITIALIZE_SPECIFIER_TYPE_WITH_DATA):
* symbols.c:
* symbols.c (Fsetplist):
* symbols.c (default_value):
* symbols.c (decode_magic_handler_type):
* symbols.c (handler_type_from_function_symbol):
* symbols.c (Fdefvaralias):
* symbols.c (init_symbols_once_early):
* symbols.c (reinit_symbols_early):
* symsinit.h:
* sysdep.c (sys_subshell):
* sysdep.c (tty_init_sys_modes_on_device):
* syswindows.h:
* text.c (dfc_convert_to_external_format):
* text.c (dfc_convert_to_internal_format):
* text.c (reinit_eistring_early):
* text.c (init_eistring_once_early):
* text.c (reinit_vars_of_text):
* text.h:
* text.h (INC_IBYTEPTR_FMT):
* text.h (DEC_IBYTEPTR_FMT):
* toolbar.c:
* toolbar.c (decode_toolbar_position):
* tooltalk.c:
* ui-gtk.c:
* unexnt.c:
* unexnt.c (_start):
* unexnt.c (unexec):
* unexnt.c (get_section_info):
* unicode.c:
* unicode.c (vars_of_unicode):
* window.c:
* window.c (allocate_window):
* window.c (new_window_mirror):
* window.c (update_mirror_internal):
* winslots.h:
author | michaels |
---|---|
date | Sun, 12 Jan 2003 11:08:22 +0000 |
parents | c15f25529e61 |
children | 6fa9919a9a0b |
rev | line source |
---|---|
872 | 1 /* Define frame-object for XEmacs. |
2 Copyright (C) 1988, 1992, 1993, 1994 Free Software Foundation, Inc. | |
3 Copyright (C) 1995 Ben Wing. | |
4 | |
5 This file is part of XEmacs. | |
6 | |
7 XEmacs is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
9 Free Software Foundation; either version 2, or (at your option) any | |
10 later version. | |
11 | |
12 XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
18 along with XEmacs; see the file COPYING. If not, write to | |
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
20 Boston, MA 02111-1307, USA. */ | |
21 | |
22 /* Synched up with: FSF 19.30. */ | |
23 | |
24 #ifndef INCLUDED_frame_impl_h_ | |
25 #define INCLUDED_frame_impl_h_ | |
26 | |
27 #include "console-impl.h" /* for error_check_frame_type */ | |
28 #include "frame.h" | |
29 | |
30 #define FRAME_TYPE_NAME(f) ((f)->framemeths->name) | |
31 #define FRAME_TYPE(f) ((f)->framemeths->symbol) | |
32 | |
33 /******** Accessing / calling a frame method *********/ | |
34 | |
35 #define HAS_FRAMEMETH_P(f, m) HAS_CONTYPE_METH_P ((f)->framemeths, m) | |
36 #define FRAMEMETH(f, m, args) CONTYPE_METH ((f)->framemeths, m, args) | |
37 #define MAYBE_FRAMEMETH(f, m, args) \ | |
38 MAYBE_CONTYPE_METH ((f)->framemeths, m, args) | |
39 #define FRAMEMETH_OR_GIVEN(f, m, args, given) \ | |
40 CONTYPE_METH_OR_GIVEN((f)->framemeths, m, args, given) | |
41 | |
42 struct frame | |
43 { | |
44 struct lcrecord_header header; | |
45 | |
46 /* Methods for this frame's console. This can also be retrieved | |
47 through frame->device->console, but it's faster this way. */ | |
48 struct console_methods *framemeths; | |
49 | |
1204 | 50 /* Duplicates framemeths->symbol. See comment in struct console. */ |
51 enum console_variant frametype; | |
52 | |
872 | 53 /* Size of text only area of this frame, excluding scrollbars, |
54 toolbars and end of line glyphs. The size can be in characters | |
55 or pixels, depending on units in which window system resizes | |
56 its windows */ | |
57 int height, width; | |
58 | |
59 /* New height and width for pending size change, in the same units | |
60 as above. 0 if no change pending. */ | |
61 int new_height, new_width; | |
62 | |
63 /* Size of text-only are of the frame, in default font characters. | |
64 This may be inaccurate due to rounding error */ | |
65 int char_height, char_width; | |
66 | |
67 /* Size of the whole frame, including scrollbars, toolbars and end | |
68 of line glyphs, in pixels */ | |
69 int pixheight, pixwidth; | |
70 | |
71 #ifdef HAVE_TTY | |
72 /* The count of frame number. This applies to TTY frames only. */ | |
73 int order_count; | |
74 #endif | |
75 | |
76 /* Current page number for a printer frame. */ | |
77 int page_number; | |
78 | |
79 /* Width of the internal border. This is a line of background color | |
80 just inside the window's border. It is normally only non-zero on | |
81 X frames, but we put it here to avoid introducing window system | |
82 dependencies. */ | |
83 int internal_border_width; | |
84 | |
85 int modiff; | |
86 | |
87 struct expose_ignore *subwindow_exposures; | |
88 struct expose_ignore *subwindow_exposures_tail; | |
89 | |
90 #ifdef HAVE_SCROLLBARS | |
91 /* frame-local scrollbar information. See scrollbar.c. */ | |
92 int scrollbar_y_offset; | |
93 | |
94 /* cache of created scrollbars */ | |
95 struct scrollbar_instance *sb_vcache; | |
96 struct scrollbar_instance *sb_hcache; | |
97 #endif | |
98 | |
99 #ifdef HAVE_TOOLBARS | |
100 /* Size of toolbars as seen by redisplay. This is used to determine | |
101 whether to re-layout windows by a call to change_frame_size early | |
102 in redisplay_frame. */ | |
103 int current_toolbar_size[4]; | |
104 #endif | |
105 | |
106 /* Size of gutters as seen by redisplay. This is used to determine | |
107 whether to re-layout windows by a call to change_frame_size early | |
108 in redisplay_frame. */ | |
109 int current_gutter_bounds[4]; | |
110 | |
111 /* Dynamic arrays of display lines for gutters */ | |
112 display_line_dynarr *current_display_lines[4]; | |
113 display_line_dynarr *desired_display_lines[4]; | |
114 | |
1204 | 115 /* A structure of auxiliary data specific to the device type. For |
116 example, struct x_frame is for X window frames; defined in | |
117 console-x-impl.h. */ | |
872 | 118 void *frame_data; |
119 | |
120 #define FRAME_SLOT_DECLARATION | |
1204 | 121 #define MARKED_SLOT(x) Lisp_Object x; |
872 | 122 #include "frameslots.h" |
123 | |
124 /* Nonzero if frame is currently displayed. | |
125 Mutually exclusive with iconified | |
126 JV: This now a tristate flag: | |
127 Value : Emacs meaning :f-v-p : X meaning | |
128 0 : not displayed : nil : unmapped | |
129 >0 : user can access it,needs repainting : t : mapped and visible | |
130 <0 : user can access it,needs no repainting : hidden :mapped and invisible | |
131 where f-v-p is the return value of frame-visible-p */ | |
132 int visible; | |
133 | |
134 /* one-bit flags: */ | |
135 | |
136 /* Is focusing onto this frame disabled? (Modal dialog boxes) */ | |
137 unsigned int disabled :1; | |
138 | |
139 /* Are we finished initializing? */ | |
140 unsigned int init_finished :1; | |
141 | |
142 /* Is frame marked for deletion? This is used in XSetErrorHandler(). */ | |
143 unsigned int being_deleted :1; | |
144 | |
145 /* Nonzero if last attempt at redisplay on this frame was preempted. */ | |
146 unsigned int display_preempted :1; | |
147 | |
148 /* Nonzero if window is currently iconified. | |
149 This and visible are mutually exclusive. */ | |
150 unsigned int iconified :1; | |
151 | |
152 /* Nonzero if this frame should be cleared and then redrawn. | |
153 Setting this will also effectively set frame_changed. */ | |
154 unsigned int clear :1; | |
155 | |
156 /* True if frame actually has a minibuffer window on it. | |
157 0 if using a minibuffer window that isn't on this frame. */ | |
158 unsigned int has_minibuffer :1; | |
159 | |
160 /* True if frame's root window can't be split. */ | |
161 unsigned int no_split :1; | |
162 | |
163 unsigned int top_toolbar_was_visible :1; | |
164 unsigned int bottom_toolbar_was_visible :1; | |
165 unsigned int left_toolbar_was_visible :1; | |
166 unsigned int right_toolbar_was_visible :1; | |
167 /* gutter visibility */ | |
168 unsigned int top_gutter_was_visible :1; | |
169 unsigned int bottom_gutter_was_visible :1; | |
170 unsigned int left_gutter_was_visible :1; | |
171 unsigned int right_gutter_was_visible :1; | |
172 | |
173 /* redisplay flags */ | |
174 unsigned int buffers_changed :1; | |
175 unsigned int clip_changed :1; | |
176 unsigned int extents_changed :1; | |
177 unsigned int faces_changed :1; | |
178 unsigned int frame_changed :1; | |
905 | 179 unsigned int frame_layout_changed :1; /* The layout of frame |
180 elements has changed. */ | |
872 | 181 unsigned int subwindows_changed :1; |
182 unsigned int subwindows_state_changed :1; | |
183 unsigned int glyphs_changed :1; | |
184 unsigned int icon_changed :1; | |
185 unsigned int menubar_changed :1; | |
186 unsigned int modeline_changed :1; | |
187 unsigned int point_changed :1; | |
188 unsigned int size_changed :1; | |
189 unsigned int toolbar_changed :1; | |
190 unsigned int gutter_changed :1; | |
191 unsigned int windows_changed :1; | |
192 unsigned int windows_structure_changed :1; | |
193 unsigned int window_face_cache_reset :1; /* used by expose handler */ | |
194 unsigned int echo_area_garbaged :1; /* used by Fredisplay_echo_area */ | |
195 unsigned int size_slipped :1; | |
196 | |
197 unsigned int size_change_pending :1; | |
198 unsigned int mirror_dirty :1; | |
199 | |
200 /* flag indicating if any window on this frame is displaying a subwindow */ | |
201 unsigned int subwindows_being_displayed :1; | |
202 }; | |
203 | |
204 /* Redefine basic properties more efficiently */ | |
205 | |
206 #undef FRAME_LIVE_P | |
207 #define FRAME_LIVE_P(f) (!EQ (FRAME_TYPE (f), Qdead)) | |
208 #undef FRAME_DEVICE | |
209 #define FRAME_DEVICE(f) ((f)->device) | |
210 | |
211 #define FRAME_TYPE_P(f, type) EQ (FRAME_TYPE (f), Q##type) | |
212 | |
213 #ifdef ERROR_CHECK_TYPES | |
214 DECLARE_INLINE_HEADER ( | |
215 struct frame * | |
216 error_check_frame_type (struct frame * f, Lisp_Object sym) | |
217 ) | |
218 { | |
219 assert (EQ (FRAME_TYPE (f), sym)); | |
220 return f; | |
221 } | |
222 # define FRAME_TYPE_DATA(f, type) \ | |
223 ((struct type##_frame *) error_check_frame_type (f, Q##type)->frame_data) | |
224 #else | |
225 # define FRAME_TYPE_DATA(f, type) \ | |
226 ((struct type##_frame *) (f)->frame_data) | |
227 #endif | |
228 | |
229 #define CHECK_FRAME_TYPE(x, type) \ | |
230 do { \ | |
231 CHECK_FRAME (x); \ | |
232 if (!FRAME_TYPE_P (XFRAME (x), type)) \ | |
233 dead_wrong_type_argument \ | |
234 (type##_console_methods->predicate_symbol, x); \ | |
235 } while (0) | |
236 #define CONCHECK_FRAME_TYPE(x, type) \ | |
237 do { \ | |
238 CONCHECK_FRAME (x); \ | |
239 if (!FRAME_TYPE_P (XFRAME (x), type)) \ | |
240 x = wrong_type_argument \ | |
241 (type##_console_methods->predicate_symbol, x); \ | |
242 } while (0) | |
243 | |
244 #define FRAME_DISPLAY_P(frm) \ | |
245 (DEVICE_DISPLAY_P (XDEVICE (FRAME_DEVICE (frm)))) | |
246 | |
247 #define CHECK_DISPLAY_FRAME(frm) \ | |
248 do { \ | |
249 CHECK_FRAME (frm); \ | |
250 CHECK_LIVE_FRAME (frm); \ | |
251 CHECK_DISPLAY_DEVICE (FRAME_DEVICE (XFRAME (frm))); \ | |
252 } while (0) | |
253 | |
254 #define CONCHECK_DISPLAY_FRAME(frm) \ | |
255 do { \ | |
256 CONCHECK_FRAME (frm); \ | |
257 CONCHECK_LIVE_FRAME (frm); \ | |
258 CONCHECK_DISPLAY_DEVICE (FRAME_DEVICE (XFRAME (frm))); \ | |
259 } while (0) | |
260 | |
261 #define FRAME_PRINTER_P(frm) \ | |
262 (DEVICE_PRINTER_P (XDEVICE (FRAME_DEVICE (frm)))) | |
263 | |
264 #define CHECK_PRINTER_FRAME(frm) \ | |
265 do { \ | |
266 CHECK_FRAME (frm); \ | |
267 CHECK_LIVE_FRAME (frm); \ | |
268 CHECK_PRINTER_DEVICE (FRAME_DEVICE (XFRAME (frm))); \ | |
269 } while (0) | |
270 | |
271 #define CONCHECK_PRINTER_FRAME(frm) \ | |
272 do { \ | |
273 CONCHECK_FRAME (frm); \ | |
274 CONCHECK_LIVE_FRAME (frm); \ | |
275 CONCHECK_PRINTER_DEVICE (FRAME_DEVICE (XFRAME (frm))); \ | |
276 } while (0) | |
277 | |
278 /* #### These should be in the frame-*.h files but there are | |
279 too many places where the abstraction is broken. Need to | |
280 fix. */ | |
281 | |
282 #define FRAME_X_P(frm) CONSOLE_TYPESYM_X_P (FRAME_TYPE (frm)) | |
283 #define CHECK_X_FRAME(z) CHECK_FRAME_TYPE (z, x) | |
284 #define CONCHECK_X_FRAME(z) CONCHECK_FRAME_TYPE (z, x) | |
285 | |
286 #define FRAME_GTK_P(frm) CONSOLE_TYPESYM_GTK_P (FRAME_TYPE (frm)) | |
287 #define CHECK_GTK_FRAME(z) CHECK_FRAME_TYPE (z, gtk) | |
288 #define CONCHECK_GTK_FRAME(z) CONCHECK_FRAME_TYPE (z, gtk) | |
289 | |
290 #define FRAME_TTY_P(frm) CONSOLE_TYPESYM_TTY_P (FRAME_TYPE (frm)) | |
291 #define CHECK_TTY_FRAME(z) CHECK_FRAME_TYPE (z, tty) | |
292 #define CONCHECK_TTY_FRAME(z) CONCHECK_FRAME_TYPE (z, tty) | |
293 | |
294 #define FRAME_STREAM_P(frm) CONSOLE_TYPESYM_STREAM_P (FRAME_TYPE (frm)) | |
295 #define CHECK_STREAM_FRAME(z) CHECK_FRAME_TYPE (z, stream) | |
296 #define CONCHECK_STREAM_FRAME(z) CONCHECK_FRAME_TYPE (z, stream) | |
297 | |
298 #define FRAME_WIN_P(frm) CONSOLE_TYPESYM_WIN_P (FRAME_TYPE (frm)) | |
299 | |
300 extern int frame_changed; | |
301 | |
302 #define MARK_FRAME_FACES_CHANGED(f) do { \ | |
303 struct frame *mffc_f = (f); \ | |
304 mffc_f->faces_changed = 1; \ | |
305 mffc_f->modiff++; \ | |
306 if (!NILP (mffc_f->device)) \ | |
307 { \ | |
308 struct device *mffc_d = XDEVICE (mffc_f->device); \ | |
309 MARK_DEVICE_FACES_CHANGED (mffc_d); \ | |
310 } \ | |
311 else \ | |
312 faces_changed = 1; \ | |
313 } while (0) | |
314 | |
315 #define MARK_FRAME_GLYPHS_CHANGED(f) do { \ | |
316 struct frame *mfgc_f = (f); \ | |
317 mfgc_f->glyphs_changed = 1; \ | |
318 mfgc_f->modiff++; \ | |
319 if (!NILP (mfgc_f->device)) \ | |
320 { \ | |
321 struct device *mfgc_d = XDEVICE (mfgc_f->device); \ | |
322 MARK_DEVICE_GLYPHS_CHANGED (mfgc_d); \ | |
323 } \ | |
324 else \ | |
325 glyphs_changed = 1; \ | |
326 } while (0) | |
327 | |
328 #define MARK_FRAME_SUBWINDOWS_CHANGED(f) do { \ | |
329 struct frame *mfgc_f = (f); \ | |
330 mfgc_f->subwindows_changed = 1; \ | |
331 mfgc_f->modiff++; \ | |
332 if (!NILP (mfgc_f->device)) \ | |
333 { \ | |
334 struct device *mfgc_d = XDEVICE (mfgc_f->device); \ | |
335 MARK_DEVICE_SUBWINDOWS_CHANGED (mfgc_d); \ | |
336 } \ | |
337 else \ | |
338 subwindows_changed = 1; \ | |
339 } while (0) | |
340 | |
341 #define MARK_FRAME_SUBWINDOWS_STATE_CHANGED(f) do { \ | |
342 struct frame *mfgc_f = (f); \ | |
343 mfgc_f->subwindows_state_changed = 1; \ | |
344 mfgc_f->modiff++; \ | |
345 if (!NILP (mfgc_f->device)) \ | |
346 { \ | |
347 struct device *mfgc_d = XDEVICE (mfgc_f->device); \ | |
348 MARK_DEVICE_SUBWINDOWS_STATE_CHANGED (mfgc_d); \ | |
349 } \ | |
350 else \ | |
351 subwindows_state_changed = 1; \ | |
352 } while (0) | |
353 | |
354 #define MARK_FRAME_TOOLBARS_CHANGED(f) do { \ | |
355 struct frame *mftc_f = (f); \ | |
356 mftc_f->toolbar_changed = 1; \ | |
357 mftc_f->modiff++; \ | |
358 if (!NILP (mftc_f->device)) \ | |
359 { \ | |
360 struct device *mftc_d = XDEVICE (mftc_f->device); \ | |
361 MARK_DEVICE_TOOLBARS_CHANGED (mftc_d); \ | |
362 } \ | |
363 else \ | |
364 toolbar_changed = 1; \ | |
365 } while (0) | |
366 | |
367 #define MARK_FRAME_GUTTERS_CHANGED(f) do { \ | |
368 struct frame *mftc_f = (f); \ | |
369 mftc_f->gutter_changed = 1; \ | |
370 mftc_f->modiff++; \ | |
371 if (!NILP (mftc_f->device)) \ | |
372 { \ | |
373 struct device *mftc_d = XDEVICE (mftc_f->device); \ | |
374 MARK_DEVICE_GUTTERS_CHANGED (mftc_d); \ | |
375 } \ | |
376 else \ | |
377 gutter_changed = 1; \ | |
378 } while (0) | |
379 | |
380 #define MARK_FRAME_SIZE_CHANGED(f) do { \ | |
381 struct frame *mfsc_f = (f); \ | |
382 mfsc_f->size_changed = 1; \ | |
383 mfsc_f->size_change_pending = 1; \ | |
384 mfsc_f->modiff++; \ | |
385 if (!NILP (mfsc_f->device)) \ | |
386 { \ | |
387 struct device *mfsc_d = XDEVICE (mfsc_f->device); \ | |
388 MARK_DEVICE_SIZE_CHANGED (mfsc_d); \ | |
389 } \ | |
390 else \ | |
391 size_changed = 1; \ | |
392 } while (0) | |
393 | |
394 #define MARK_FRAME_CHANGED(f) do { \ | |
395 struct frame *mfc_f = (f); \ | |
396 mfc_f->frame_changed = 1; \ | |
397 mfc_f->modiff++; \ | |
398 if (!NILP (mfc_f->device)) \ | |
399 { \ | |
400 struct device *mfc_d = XDEVICE (mfc_f->device); \ | |
401 MARK_DEVICE_FRAME_CHANGED (mfc_d); \ | |
402 } \ | |
403 else \ | |
404 frame_changed = 1; \ | |
405 } while (0) | |
406 | |
905 | 407 #define MARK_FRAME_LAYOUT_CHANGED(f) do { \ |
408 struct frame *mfc_f = (f); \ | |
409 mfc_f->frame_layout_changed = 1; \ | |
410 mfc_f->modiff++; \ | |
411 if (!NILP (mfc_f->device)) \ | |
412 { \ | |
413 struct device *mfc_d = XDEVICE (mfc_f->device); \ | |
414 MARK_DEVICE_FRAME_LAYOUT_CHANGED (mfc_d); \ | |
415 } \ | |
416 else \ | |
417 frame_layout_changed = 1; \ | |
418 } while (0) | |
419 | |
872 | 420 #define MARK_FRAME_WINDOWS_CHANGED(f) do { \ |
421 struct frame *mfwc_f = (f); \ | |
422 mfwc_f->windows_changed = 1; \ | |
423 mfwc_f->modiff++; \ | |
424 if (!NILP (mfwc_f->device)) \ | |
425 { \ | |
426 struct device *mfwc_d = XDEVICE (mfwc_f->device); \ | |
427 MARK_DEVICE_WINDOWS_CHANGED (mfwc_d); \ | |
428 } \ | |
429 else \ | |
430 windows_changed = 1; \ | |
431 } while (0) | |
432 | |
433 #define MARK_FRAME_WINDOWS_STRUCTURE_CHANGED(f) do { \ | |
434 struct frame *fwsc_f = (f); \ | |
435 fwsc_f->windows_structure_changed = 1; \ | |
436 fwsc_f->modiff++; \ | |
437 if (!NILP (fwsc_f->device)) \ | |
438 { \ | |
439 struct device *fwsc_d = XDEVICE (fwsc_f->device); \ | |
440 MARK_DEVICE_WINDOWS_STRUCTURE_CHANGED (fwsc_d); \ | |
441 } \ | |
442 else \ | |
443 windows_structure_changed = 1; \ | |
444 invalidate_vertical_divider_cache_in_frame (fwsc_f); \ | |
445 } while (0) | |
446 | |
447 #define MARK_FRAME_SIZE_SLIPPED(f) do { \ | |
448 struct frame *fwsc_f = (f); \ | |
449 fwsc_f->size_slipped = 1; \ | |
450 fwsc_f->modiff++; \ | |
451 if (!NILP (fwsc_f->device)) \ | |
452 { \ | |
453 struct device *fwsc_d = XDEVICE (fwsc_f->device); \ | |
454 MARK_DEVICE_FRAME_CHANGED (fwsc_d); \ | |
455 } \ | |
456 else \ | |
457 frame_changed = 1; \ | |
458 } while (0) | |
459 | |
460 #define CLEAR_FRAME_SIZE_SLIPPED(f) do { \ | |
461 struct frame *fwsc_f = (f); \ | |
462 fwsc_f->size_slipped = 0; \ | |
463 } while (0) | |
464 | |
465 #define SET_FRAME_CLEAR(f) MARK_FRAME_CHANGED (f); (f)->clear = 1 | |
466 | |
467 #define FRAME_MINIBUF_ONLY_P(f) \ | |
468 EQ (FRAME_ROOT_WINDOW (f), FRAME_MINIBUF_WINDOW (f)) | |
469 #define FRAME_HAS_MINIBUF_P(f) ((f)->has_minibuffer) | |
470 #define FRAME_HEIGHT(f) ((f)->height) | |
471 #define FRAME_WIDTH(f) ((f)->width) | |
472 #define FRAME_CHARHEIGHT(f) ((f)->char_height) | |
473 #define FRAME_CHARWIDTH(f) ((f)->char_width) | |
474 #define FRAME_PIXHEIGHT(f) ((f)->pixheight) | |
475 #define FRAME_PIXWIDTH(f) ((f)->pixwidth) | |
476 #define FRAME_PAGENUMBER(f) ((f)->page_number + 0) | |
477 #define FRAME_SET_PAGENUMBER(f,x) (f)->page_number = (x); | |
478 #ifdef HAVE_SCROLLBARS | |
479 #define FRAME_SCROLLBAR_WIDTH(f) \ | |
480 (NILP ((f)->vertical_scrollbar_visible_p) ? \ | |
481 0 : XINT ((f)->scrollbar_width)) | |
482 #define FRAME_SCROLLBAR_HEIGHT(f) \ | |
483 (NILP ((f)->horizontal_scrollbar_visible_p) ? \ | |
484 0 : XINT ((f)->scrollbar_height)) | |
485 #else | |
486 #define FRAME_SCROLLBAR_WIDTH(f) 0 | |
487 #define FRAME_SCROLLBAR_HEIGHT(f) 0 | |
488 #endif | |
489 | |
490 #define FRAME_NEW_HEIGHT(f) ((f)->new_height) | |
491 #define FRAME_NEW_WIDTH(f) ((f)->new_width) | |
492 #define FRAME_CURSOR_X(f) ((f)->cursor_x) | |
493 #define FRAME_CURSOR_Y(f) ((f)->cursor_y) | |
494 #define FRAME_VISIBLE_P(f) ((f)->visible) | |
495 #define FRAME_REPAINT_P(f) ((f)->visible>0) | |
496 #define FRAME_NO_SPLIT_P(f) ((f)->no_split) | |
497 #define FRAME_ICONIFIED_P(f) ((f)->iconified) | |
498 #define FRAME_FOCUS_FRAME(f) ((f)->focus_frame) | |
499 #define FRAME_MINIBUF_WINDOW(f) ((f)->minibuffer_window) | |
500 #define FRAME_ROOT_WINDOW(f) ((f)->root_window) | |
501 /* Catch people attempting to set this. */ | |
502 #define FRAME_SELECTED_WINDOW(f) NON_LVALUE ((f)->selected_window) | |
503 #define FRAME_SELECTED_XWINDOW(f) XWINDOW (FRAME_SELECTED_WINDOW (f)) | |
504 #define FRAME_LAST_NONMINIBUF_WINDOW(f) \ | |
505 NON_LVALUE ((f)->last_nonminibuf_window) | |
506 #define FRAME_SB_VCACHE(f) ((f)->sb_vcache) | |
507 #define FRAME_SB_HCACHE(f) ((f)->sb_hcache) | |
508 #define FRAME_SUBWINDOW_CACHE(f) ((f)->subwindow_instance_cache) | |
509 | |
510 #if 0 /* FSFmacs */ | |
511 | |
512 #define FRAME_VISIBLE_P(f) ((f)->visible != 0) | |
513 #define FRAME_SET_VISIBLE(f,p) \ | |
514 ((f)->async_visible = (p), FRAME_SAMPLE_VISIBILITY (f)) | |
515 | |
516 /* Emacs's redisplay code could become confused if a frame's | |
517 visibility changes at arbitrary times. For example, if a frame is | |
518 visible while the desired glyphs are being built, but becomes | |
519 invisible before they are updated, then some rows of the | |
520 desired_glyphs will be left marked as enabled after redisplay is | |
521 complete, which should never happen. The next time the frame | |
522 becomes visible, redisplay will probably barf. | |
523 | |
524 Currently, there are no similar situations involving iconified, but | |
525 the principle is the same. | |
526 | |
527 So instead of having asynchronous input handlers directly set and | |
528 clear the frame's visibility and iconification flags, they just set | |
529 the async_visible and async_iconified flags; the redisplay code | |
530 calls the FRAME_SAMPLE_VISIBILITY macro before doing any redisplay, | |
531 which sets visible and iconified from their asynchronous | |
532 counterparts. | |
533 | |
534 Synchronous code must use the FRAME_SET_VISIBLE macro. | |
535 | |
536 Also, if a frame used to be invisible, but has just become visible, | |
537 it must be marked as garbaged, since redisplay hasn't been keeping | |
538 up its contents. */ | |
539 #define FRAME_SAMPLE_VISIBILITY(f) \ | |
540 (((f)->async_visible && ! (f)->visible) ? SET_FRAME_GARBAGED (f) : 0, \ | |
541 (f)->visible = (f)->async_visible, \ | |
542 (f)->iconified = (f)->async_iconified) | |
543 | |
544 #endif /* FSFmacs */ | |
545 | |
546 #define FRAME_BORDER_WIDTH(f) ((f)->internal_border_width) | |
547 #define FRAME_BORDER_HEIGHT(f) ((f)->internal_border_width) | |
548 | |
549 /* This returns the frame-local value; that tells you what you should | |
550 use when computing the frame size. It is *not* the actual toolbar | |
551 size because that depends on the selected window. Use the macros | |
552 below for that. | |
553 */ | |
554 | |
555 #ifdef HAVE_TOOLBARS | |
556 #define FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE(f, pos) \ | |
557 (!NILP((f)->toolbar_buttons[pos]) && !NILP ((f)->toolbar_visible_p[pos])) | |
558 #define FRAME_RAW_THEORETICAL_TOOLBAR_SIZE(f, pos) \ | |
559 (!NILP ((f)->toolbar_buttons[pos]) && INTP((f)->toolbar_size[pos]) ? \ | |
560 (XINT ((f)->toolbar_size[pos])) : 0) | |
561 #define FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) \ | |
562 (!NILP ((f)->toolbar_buttons[pos]) && INTP((f)->toolbar_border_width[pos]) ? \ | |
563 (XINT ((f)->toolbar_border_width[pos])) : 0) | |
564 #else | |
565 #define FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE(f, pos) 0 | |
566 #define FRAME_RAW_THEORETICAL_TOOLBAR_SIZE(f, pos) 0 | |
567 #define FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) 0 | |
568 #endif | |
569 | |
570 #define FRAME_THEORETICAL_TOOLBAR_SIZE(f, pos) \ | |
571 (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \ | |
572 ? FRAME_RAW_THEORETICAL_TOOLBAR_SIZE (f, pos) \ | |
573 : 0) | |
574 | |
575 #define FRAME_THEORETICAL_TOP_TOOLBAR_HEIGHT(f) \ | |
576 FRAME_THEORETICAL_TOOLBAR_SIZE (f, TOP_TOOLBAR) | |
577 #define FRAME_THEORETICAL_BOTTOM_TOOLBAR_HEIGHT(f) \ | |
578 FRAME_THEORETICAL_TOOLBAR_SIZE (f, BOTTOM_TOOLBAR) | |
579 #define FRAME_THEORETICAL_LEFT_TOOLBAR_WIDTH(f) \ | |
580 FRAME_THEORETICAL_TOOLBAR_SIZE (f, LEFT_TOOLBAR) | |
581 #define FRAME_THEORETICAL_RIGHT_TOOLBAR_WIDTH(f) \ | |
582 FRAME_THEORETICAL_TOOLBAR_SIZE (f, RIGHT_TOOLBAR) | |
583 | |
584 #define FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) \ | |
585 (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \ | |
586 ? FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, pos) \ | |
587 : 0) | |
588 | |
589 #define FRAME_THEORETICAL_TOP_TOOLBAR_BORDER_WIDTH(f) \ | |
590 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, TOP_TOOLBAR) | |
591 #define FRAME_THEORETICAL_BOTTOM_TOOLBAR_BORDER_WIDTH(f) \ | |
592 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, BOTTOM_TOOLBAR) | |
593 #define FRAME_THEORETICAL_LEFT_TOOLBAR_BORDER_WIDTH(f) \ | |
594 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, LEFT_TOOLBAR) | |
595 #define FRAME_THEORETICAL_RIGHT_TOOLBAR_BORDER_WIDTH(f) \ | |
596 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, RIGHT_TOOLBAR) | |
597 | |
598 /* This returns the window-local value rather than the frame-local value; | |
599 that tells you about what's actually visible rather than what should | |
600 be used when computing the frame size. */ | |
601 | |
602 #ifdef HAVE_TOOLBARS | |
603 #define FRAME_RAW_REAL_TOOLBAR_VISIBLE(f, pos) \ | |
604 (HAS_FRAMEMETH_P (f, initialize_frame_toolbars) \ | |
605 && !NILP (XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_visible_p[pos])) | |
606 #define FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH(f, pos) \ | |
607 ((INTP (XWINDOW \ | |
608 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_border_width[pos])) ? \ | |
609 (XINT (XWINDOW \ | |
610 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_border_width[pos])) \ | |
611 : 0) | |
612 #define FRAME_RAW_REAL_TOOLBAR_SIZE(f, pos) \ | |
613 ((INTP (XWINDOW \ | |
614 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_size[pos])) ? \ | |
615 (XINT (XWINDOW \ | |
616 (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar_size[pos])) : 0) | |
617 #define FRAME_REAL_TOOLBAR(f, pos) \ | |
618 (XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->toolbar[pos]) | |
619 #else | |
620 #define FRAME_RAW_REAL_TOOLBAR_VISIBLE(f, pos) 0 | |
621 #define FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH(f, pos) 0 | |
622 #define FRAME_RAW_REAL_TOOLBAR_SIZE(f, pos) 0 | |
623 #define FRAME_REAL_TOOLBAR(f, pos) Qnil | |
624 #endif | |
625 | |
626 /* Note to Chuck | |
627 Note to Chuck | |
628 Note to Chuck: | |
629 | |
630 The former definitions of FRAME_REAL_FOO_TOOLBAR_VISIBLE | |
631 looked at the toolbar data to see what was there. The | |
632 current ones look at the current values of the specifiers. | |
633 This is a semantic change; the former definition returned | |
634 what was *actually* there right at the moment, while the | |
635 current one returns what *ought* to be there once redisplay | |
636 has run to completion. I think this new definition is more | |
637 correct in almost all circumstances and is much less likely | |
638 to lead to strange race conditions. I'm not completely | |
639 sure that there aren't some places in the redisplay code | |
640 that use these macros and expect the former semantics, so | |
641 if you encounter some odd toolbar behavior, you might want | |
642 to look into this. --ben */ | |
643 | |
644 #define FRAME_REAL_TOOLBAR_VISIBLE(f, pos) \ | |
645 ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \ | |
646 && FRAME_RAW_REAL_TOOLBAR_SIZE (f, pos) > 0) \ | |
647 ? FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos) \ | |
648 : 0) | |
649 #define FRAME_REAL_TOOLBAR_SIZE(f, pos) \ | |
650 ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \ | |
651 && FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos)) \ | |
652 ? FRAME_RAW_REAL_TOOLBAR_SIZE (f, pos) \ | |
653 : 0) | |
654 #define FRAME_REAL_TOOLBAR_BORDER_WIDTH(f, pos) \ | |
655 ((!NILP (FRAME_REAL_TOOLBAR (f, pos)) \ | |
656 && FRAME_RAW_REAL_TOOLBAR_VISIBLE (f, pos)) \ | |
657 ? FRAME_RAW_REAL_TOOLBAR_BORDER_WIDTH (f, pos) \ | |
658 : 0) | |
659 | |
660 #define FRAME_REAL_TOP_TOOLBAR_HEIGHT(f) \ | |
661 FRAME_REAL_TOOLBAR_SIZE (f, TOP_TOOLBAR) | |
662 #define FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT(f) \ | |
663 FRAME_REAL_TOOLBAR_SIZE (f, BOTTOM_TOOLBAR) | |
664 #define FRAME_REAL_LEFT_TOOLBAR_WIDTH(f) \ | |
665 FRAME_REAL_TOOLBAR_SIZE (f, LEFT_TOOLBAR) | |
666 #define FRAME_REAL_RIGHT_TOOLBAR_WIDTH(f) \ | |
667 FRAME_REAL_TOOLBAR_SIZE (f, RIGHT_TOOLBAR) | |
668 | |
669 #define FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH(f) \ | |
670 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, TOP_TOOLBAR) | |
671 #define FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH(f) \ | |
672 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, BOTTOM_TOOLBAR) | |
673 #define FRAME_REAL_LEFT_TOOLBAR_BORDER_WIDTH(f) \ | |
674 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, LEFT_TOOLBAR) | |
675 #define FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH(f) \ | |
676 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, RIGHT_TOOLBAR) | |
677 | |
678 #define FRAME_REAL_TOP_TOOLBAR_VISIBLE(f) \ | |
679 FRAME_REAL_TOOLBAR_VISIBLE (f, TOP_TOOLBAR) | |
680 #define FRAME_REAL_BOTTOM_TOOLBAR_VISIBLE(f) \ | |
681 FRAME_REAL_TOOLBAR_VISIBLE (f, BOTTOM_TOOLBAR) | |
682 #define FRAME_REAL_LEFT_TOOLBAR_VISIBLE(f) \ | |
683 FRAME_REAL_TOOLBAR_VISIBLE (f, LEFT_TOOLBAR) | |
684 #define FRAME_REAL_RIGHT_TOOLBAR_VISIBLE(f) \ | |
685 FRAME_REAL_TOOLBAR_VISIBLE (f, RIGHT_TOOLBAR) | |
686 | |
687 #define FRAME_TOP_BORDER_START(f) \ | |
688 (FRAME_REAL_TOP_TOOLBAR_HEIGHT (f) + \ | |
689 2 * FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH (f)) | |
690 #define FRAME_TOP_BORDER_END(f) \ | |
691 (FRAME_TOP_BORDER_START (f) + FRAME_BORDER_HEIGHT (f)) | |
692 | |
693 #define FRAME_BOTTOM_BORDER_START(f) \ | |
694 (FRAME_PIXHEIGHT (f) - FRAME_BORDER_HEIGHT (f) - \ | |
695 FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT (f) - \ | |
696 2 * FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH (f)) | |
697 #define FRAME_BOTTOM_BORDER_END(f) \ | |
698 (FRAME_PIXHEIGHT (f) - FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT (f) - \ | |
699 2 * FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH (f)) | |
700 | |
701 #define FRAME_LEFT_BORDER_START(f) \ | |
702 (FRAME_REAL_LEFT_TOOLBAR_WIDTH (f) + \ | |
703 2 * FRAME_REAL_LEFT_TOOLBAR_BORDER_WIDTH (f)) | |
704 #define FRAME_LEFT_BORDER_END(f) \ | |
705 (FRAME_LEFT_BORDER_START (f) + FRAME_BORDER_WIDTH (f)) | |
706 | |
707 #define FRAME_RIGHT_BORDER_START(f) \ | |
708 (FRAME_PIXWIDTH (f) - FRAME_BORDER_WIDTH (f) - \ | |
709 FRAME_REAL_RIGHT_TOOLBAR_WIDTH(f) - \ | |
710 2 * FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH (f)) | |
711 #define FRAME_RIGHT_BORDER_END(f) \ | |
712 (FRAME_PIXWIDTH (f) - FRAME_REAL_RIGHT_TOOLBAR_WIDTH (f) - \ | |
713 2 * FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH(f)) | |
714 | |
715 #endif /* INCLUDED_frame_impl_h_ */ |