This fixes the majority of Ben's complaints I think and represents a
compromise between his and my views. I also fixed a bunch of cygwin
problems introduced by Ben and Kirill's patches. I also fixed the
irritating tab reordering when you click on a tab. Someone has broken
font-lock.el in the last few commits - I get virtually nothing highlighted
- so progress gauges only appear very briefly.
There is an oustanding GC bug with tree views currently, but since these
are not used currently I'm going to commit anyway. If anyone is interested
in the problem, eval glyphs-test.el and then do M-x garbage-collect. I have
no idea what is going on despite looking at it for a long time.
andy
2000-07-22 Andy Piper <andy(a)xemacs.org>
* symsinit.h: add syms_of_win32().
* gui-msw.c (syms_of_gui_mswindows): remove
Fmswindows_shell_execute.
(Fmswindows_shell_execute): moved to win32.c.
* emacs.c (main_1): add syms_of_win32 ().
* win32.c (init_potentially_nonexistent_functions): rewrite in
compiler-friendly terms.
(Fmswindows_shell_execute): move here from gui-msw.c.
(syms_of_win32): new.
* device-msw.c (Fmswindows_printer_list): clean up args to
EnumPrinters.
Don't include tchar under cygwin or mingw.
(msprinter_default_printer): make cygwin-friendly.
2000-07-21 Andy Piper <andy(a)xemacs.org>
* glyphs-widget.c (image_instantiator_tree_view): use tab
control's update function.
(layout_property): new function. Retrieve items.
* glyphs-msw.c (mswindows_tree_view_redisplay): new
function. Re-populate the tree view from the pending items.
* glyphs.c (instantiate_image_instantiator): Make sure the domain
is designated the parent if the domain is an image instance. This
is needed so that dirtiness can be cascade up the hierarchy and
thus for layout children to be redisplayed correctly.
(allocate_image_instance): rename glyph -> parent.
* redisplay.h: change redisplay_output_layout signature.
* redisplay-msw.c (mswindows_output_display_block): use domain
arg.
* redisplay-x.c (x_output_display_block): use domain arg.
2000-07-10 Andy Piper <andy(a)xemacs.org>
* glyph-test.el: fix to use all vector instantiators.
* window.c (Fset_window_configuration): add comment.
* redisplay-output.c (compare_runes):
(redisplay_output_subwindow): redisplay rather than update subwindow.
(redisplay_output_layout): ditto.
* redisplay-msw.c (mswindows_frame_output_end):
(mswindows_frame_output_end): make defer window pos optional.
* lisp.h: add Flast.
* glyphs.h (struct image_instantiator_methods): add dest_mask top
normalize method. Change update method to be for changed
instantiators. Add redisplay method. Change signature of layout
method.
(struct Lisp_Image_Instance): add instantiator.
(IMAGE_INSTANCE_INSTANTIATOR): new.
(IMAGE_INSTANCE_SUBWINDOW_FACE): new.
(XIMAGE_INSTANCE_INSTANTIATOR): new.
(XIMAGE_INSTANCE_SUBWINDOW_FACE): new.
* glyphs.c:
(find_instantiator_differences): new function.
(Fset_instantiator_property): new convenience function.
(check_image_instance_structure): strictly check for vector
instantiators.
(normalize_image_instantiator): make non-static.
(instantiate_image_instantiator): pass on dest_mask and use new
signatures for image_instance_layout and friends.
(mark_image_instance): mark the instantiator. Mark the subwindow
face not the widget face.
(image_instance_equal): add instantiator.
(image_instance_hash): ditto.
(allocate_image_instance): ditto.
(Fset_image_instance_property): removed.
(Fimage_instance_file_name): ditto.
(Fcolorize_image_instance): ditto.
(image_instance_layout): add offsets to be set.
(update_image_instance): new function. update an image instance
from its changed instantiator.
(inherit_normalize): add dest_mask.
(xbm_normalize): ditto.
(xface_normalize): ditto.
(xpm_normalize): ditto.
(text_update): set_property -> update.
(image_instantiate): use the glyph identity as a hash key, not the
instantiator.
(glyph_width): use new image_instance_layout signature.
(glyph_ascent): ditto.
(glyph_descent): ditto.
(glyph_height): ditto.
(glyph_query_geometry): ressurrect.
(glyph_layout): ditto.
(redisplay_subwindow): update -> redisplay.
(syms_of_glyphs): add Fset_instantiator_property.
(image_instantiator_format_create): set_property -> update.
* glyphs-x.c:
(autodetect_normalize): add dest_maks to signature.
(x_redisplay_subwindow): update -> redisplay.
(x_redisplay_widget): ditto.
(x_button_redisplay): ditto.
(x_progress_gauge_redisplay): ditto.
(x_tab_control_redisplay): ditto. Rewrite to cope with changed
stacking order.
(console_type_create_glyphs_x): update -> redisplay.
(image_instantiator_format_create_glyphs_x): ditto.
* glyphs-widget.c:
(check_valid_instantiator): disallow glyphs in the instantiator,
they must now be vectors.
(check_valid_instantiator_list): ditto.
(glyph_instantiator_to_glyph): use internal symbol rather than
intern.
(widget_update): renamed from widget_set_property. Call cascaded
update methods.
(redisplay_widget): renamed from update_widget.
(widget_layout): image_instance_layout now takes position as well
as size.
(widget_normalize): ditto.
(widget_instantiate): ditto.
(tab_control_query_geometry) ditto.:
(tab_control_update): renamed from tab_control_set_property.
(progress_gauge_update): set_property -> update.
(layout_normalize): rewrite so that child instantiators are
normalized also.
(layout_update): new function. Create glyphs from the normalized
children and cope with any other layout keywords. We do not
instantiate children here that will be take care of by
redisplay_output_layout.
(layout_instantiate): call layout_update and not much else.
(layout_post_instantiate): not sure whether this is needed
anymore.
(layout_query_geometry): query glyph geometry rather than
image_instance geometry.
(layout_layout): set offsets from pass in parameters. Use glyph
geometry and layout functions rather than image instance ones.
(native_layout_layout): ditto.
(syms_of_glyphs_widget): add make-glyph and set-glyph-image.
(image_instantiator_widget): set_property -> update.
(image_instantiator_buttons): ditto.
(image_instantiator_progress_guage): ditto.
(image_instantiator_tab_control): ditto.
(VALID_LAYOUT_KEYWORDS): instantiators must now be vectors.
(image_instantiator_layout): add update method.
* glyphs-msw.c (bmp_normalize):
(mswindows_resource_normalize): add dest_mask so that it can be
proprogated by layout_normalize.
(begin_defer_window_pos): make optional because it may not be the
right thing to do and it introduces differences with X.
(mswindows_unmap_subwindow): ditto.
(mswindows_map_subwindow): ditto.
(mswindows_redisplay_subwindow): renamed from
mswindows_update_subwindow.
(mswindows_redisplay_widget): ditto.
(mswindows_button_redisplay): renamed from
mswindows_button_update. Update is now what the instantiation
function does for a changed instantiator.
(mswindows_progress_gauge_instantiate): set the progress value
here if appropriate.
(mswindows_tab_control_redisplay): cope with re-ordering of the
members of the tab widget by simply selecting the new top
widget. This makes things appear ok if you click on a tab.
(mswindows_combo_box_instantiate): image_instance_layout now takes
position as well as size.
(mswindows_progress_gauge_redisplay): renamed from
mswindows_progress_gauge_update.
(console_type_create_glyphs_mswindows): fix update -> redisplay.
(image_instantiator_format_create_glyphs_mswindows): ditto.
* glyphs-eimage.c (jpeg_normalize):
(gif_normalize):
(png_normalize):
(tiff_normalize): add dest_mask so that it can be proprogated by
layout_normalize.
* elhash.c:
(print_hash_table):
(hash_table_weakness_validate):
(decode_hash_table_weakness):
(Fhash_table_weakness):
(Fhash_table_type):
(syms_of_elhash): use Ben's naming scheme for hashtable types..
* console.h (struct console_methods): move update_* to
redisplay_*.
* gutter-items.el (buffers-tab-switch-to-buffer): remove now-bogus
comment.
(progress-text-glyph): deleted.
(progress-layout-glyph): make completely minimal.
(progress-gauge-glyph): ditto.
(progress-display-style): fix to handle dynamic instantiator
changes.
(progress-text-instantiator): new.
(progress-layout-instantiator): new.
(progress-gauge-instantiator): new.
(set-progress-display-instantiator): renamed and changed from
set-progress-display-style.
(progress-abort-glyph): use instantiator not glyph.
(append-progress-display): use set-progress-display-instantiator
and set-glyph-image.
(abort-progress-display): ditto.
(raw-append-progress-display): ditto.
--------------------------------------------------------------
Dr Andy Piper
Principal Consultant, BEA Systems Ltd