At 01:06 AM 8/23/00 +0900, Stephen J. Turnbull wrote:
Editres tells me I have two tabs widgets with the same buffer list.
The lists are not kept in synch when new buffer in a different mode is
added. Only one of the two is affected.
This is correct since you can only ever see one.
This may be associated with the fact that I started up XEmacs with
several file arguments, so I had a split frame to start with.
Right - you only get more than 1 when you have more than one domain (window).
Tab controls now obey the default face (impressive) but they wait
until you select them. Evidently code needs to be added to notify
them about face changes. A separate issue is that this also may take
several attempts, I assume because of the multiple tab widget synching
problem.
The synching problem shows up as "received an unexpected
SelectionNotify event" messages rather than a crash. I also see a
garbled tab control.
Please try the attached patch which fixes all sync problems for me. The
basic problem is that by selecting a tab you can change its displayed state
but not its stored state if in the process you switch windows and hence get
another tab.
This was very difficult to debug .....
I'm also getting Didier's (wasn't it?) BadFont and BadGC
errors. This
seems to be associated with the garbled tab control.
Please try the patch, but I have never seen these problems so I am not hopeful.
andy
2000-08-23 Andy Piper <andy(a)xemacs.org>
* gui-msw.c (mswindows_handle_gui_wm_command): set
action_occurred.
* gui-x.c (popup_selection_callback): ditto.
* glyphs.h (IMAGE_INSTANCE_WIDGET_ACTION_OCCURRED): new accessor.
(XIMAGE_INSTANCE_WIDGET_ACTION_OCCURRED): ditto.
(struct Lisp_Image_Instance): add action_occurred flag.
* glyphs.c (redisplay_subwindow): use action_occurred flag.
(image_instance_changed): ditto.
(reset_frame_subwindow_instance_cache): only unmap windows - do
not remove them from the cache also.
* glyphs-widget.c (tab_control_update): better debug.
(progress_gauge_update): ditto.
(layout_update): ditto.
(layout_instantiate): ditto.
(tab_control_order_only_changed): cope with null pending items.
* glyphs-msw.c (mswindows_tab_control_redisplay): add better
debug. Force selection of an item when an action occurred. Cope
with null pending_items.
(mswindows_progress_gauge_redisplay): better debug.
* glyphs-x.c (x_tab_control_redisplay): ditto.
* redisplay.c (redisplay_frame): reset the frame cache if the
frame is garbaged.
* window.c (Fset_window_configuration): potentially re-enable
frame cache reset.
(window_unmap_subwindows): need to finalize instances here since
it is only used in mark_window_as_deleted.
--------------------------------------------------------------
Dr Andy Piper
Principal Consultant, BEA Systems Ltd