This significantly robustifies the progress gauge and friends. I have
disabled the quit button for now since processing events for this causes
too many problems. I have a better solution in mind.
I also cannot reproduce the crash I was having under X. I would be
interested if John Turner's crashes still occur (I assume yes since I
haven't fixed anything that makes me think they would be gone).
I also need to know if Steve's crashes occur with this since the fix I have
actually applied to glyphs.c is different to the one I posted a couple of
days ago.
Ben's claim about hashing was prophetic as it turns out .....
andy
2000-03-24 Andy Piper <andy(a)xemacs.org>
* gutter-items.el (add-tab-to-gutter): use copy-sequence.
(abort-progress-display): ditto. Don't delete the created extent.
(raw-append-progress-display): ditto.
(progress-display-dispatch-non-command-events): new
function. Encapsulates what we want to do when no command input is
required.
(progress-display-dispatch-command-events): likewise, but disable
for now since it causes too many problems.
(append-progress-display): use them.
(raw-append-progress-display): ditto.
(default-gutter-position-changed-hook): set this rather than
default-gutter-position-changed.
(default-gutter-position-changed-hook): lambda with zero arguments
rather than one.
(raw-append-progress-display): trap errors in pending input since
allowing them to signal will hose the gauge well and
truly. Ideally we would like to delay these until we are more able
to cope.
(append-progress-display): ditto.
2000-03-24 Andy Piper <andy(a)xemacs.org>
* redisplay-output.c (compare_runes): use image_instance_changed
to detect changes. Do not depend on glyphs_changed, only depend on
dirtiness.
(redisplay_output_layout): add debug messages.
(compare_runes): ditto.
* glyphs.h: declare new functions.
(struct Lisp_Image_Instance): remove percent and associated
accessors.
* gui.h: declare new copying functions.
* gui.c (copy_gui_item_tree): new function.
(copy_gui_item): new function.
(gui_item_id_hash): revert to standard hash.
(gui_item_hash): ditto.
(gui_item_hash_internal): deleted.
(mark_gui_item): mark value.
(gui_item_add_keyval_pair): add value.
(gui_item_init): ditto.
(gui_add_item_keywords_to_plist): ditto.
(gui_item_equal): ditto.
(syms_of_gui): add Q_value.
* glyphs-x.c (x_progress_gauge_update): use pending items and
value for setting the state.
(x_update_widget): don't set items from pending here.
* glyphs-widget.c (update_widget): update items here.
(progress_gauge_set_property): use items for storing value. Put
new value in pending items.
* glyphs-msw.c (mswindows_progress_gauge_update): use pending
items for new value. Convert percent -> value.
(mswindows_tab_control_update): don't update items here.
* glyphs.c (Fupdate_widget_instances): use image_instance_changed.
(update_subwindow): ditto.
(image_instance_changed): new function. Compare hash values and
past and present widget items.
(image_instantiate): We more careful about where we instantiate
things.
(image_instantiate): add error checking.
* gutter.c (syms_of_gutter): use -hook.
2000-03-22 Andy Piper <andy(a)xemacs.org>
* config.h.in: add ERROR_CHECK_GLYPHS.
* configure.in: add error_check_glyphs.
--------------------------------------------------------------
Dr Andy Piper
Senior Consultant Architect, BEA Systems Ltd