[comp.windows.x] Xt Intrinsics

swick@ATHENA.MIT.EDU (Ralph R. Swick) (05/18/88)

     Date:  Mon, 25 Apr 88 15:45:53 -0100
     From:  mcvax!latlog!PAYNE@uunet.UU.NET

     I have some suggestions for very minor changes to the intrinsics, is this
     the place to send my comments?

Sure, this is the appropriate place for public discussion.

     1) Shell widgets should only get mapped in XtRealize if mapped_when_managed
        is set (I believe this is already being dealt with).

Yes.  The X Consortium is currently discussing an update to the Intrinsics
specification and this is a part of that update.

     2) XtDispatchEvent should return TRUE if the event was used by the intrinsics

Yes.  This is also in the new draft spec.

     3) Composite widgets should have an XtorderProc to allow the order proc to
        be set in the argument list.

Agreed.  This is a bug.

     4) Shell widgets should have an XtsaveUnder property for servers that support
        this feature.

It is already there.

        This may also imply that the shell widget should grab the server when
        mapped and ungrabserver when unmapped as I am not sure of the advantage
        of save unders when the server is not grabbed?

You may be correct about save unders, but I prefer to let the
application decide if and when to grab.  Note that map requests are
assumed to succeed (eventually) whereas grabs may fail.

     5) A utility function get widget geometry would be nice to save applications
        having to access widget fields directly (I have a function
        XtGetWidgetGeometry which takes a widget and passes back x, y, width, height
         and border_width if the parameters are non-NULL).

Perhaps there should be access methods for every resource field of all
widgets.  Life could get pretty cluttered, however.  In the case of geometry,
the view has been that only the parent and the individual child have any
need to be concerned with these fields except in extraordinary cases.
If you have an extraordinary case, XtGetValues is the general-purpose
mechanism for querying widget state.

     I also have some comments on the athena widgets:

     1) If would be nice if all the composite widgets are subclass of simple, or
        add the cursor and insensitive border into core (a better idea I think).

My own view as to what should be in core is based on whether there is any
real advantage over putting such things in a common subclass(es), and
whether the extra space in every widget instance justified the advantage.
My preferred approach would be to subclass Composite in the same way as
was done for Simple.

     2) Simple should have a flag to turn the insensitive border feature on
        and off.

Sure, I'll add this to the wish list.  I suspect a better approach is
to add a 'make_yourself_insensitive' method.

     3) The text widget should have a callback list for when the buffer is exceeded.

On the wish list.

     4) The text widget should allow better access to subresources, I have had
        real problems accessing the subresources (I couldn't getXtSetSubresources
        to work) and I don't seem to be able to set text subresources in my
        defaults file (this may be due to the way I am doing this?).

There was a bug in the way Text created it's subparts.  Xstuff will have
the update soon.

     5) Nicer form semantics

On the to-do list.

     A general point about the intrinsics, is it possible to use widget actions
     by a non-event trigger, i.e. say in my actions table I have my own action
     on a particular event type which will then conditionally call a superclass
     action, how do I do this when I can't put it in my action table because it
     doesn't always get called (clear?).
     What I am saying is, is it possible to have a function of the type
     XtMakeAction("unhighlight()", &event) which acts as if the event passed through
     had triggered the event? This would allow full access to widget actions, or
     can this be done already?

I think I understand you.  The superclass actions are available to you
automatically by naming them in your own translation table.  The superclass
could also export it's actions as methods through the class structure.
What you would like is a public interface to the action table so you can
use the superclass' symbolic action name in your subclass implementation.
Sounds like a reasonable idea to me; I'll give it some thought.  Since
the actions table is a public structure, you do have sufficient information
to implement it yourself.

-Ralph

PAYNE@latlog.UUCP (06/21/88)

I have a question about translation tables wrt key events.

This is what I want to do:

using the text widget I want to add another action called interrupt (say)
and bind it to ctrl-C (say). However it appears that I can not do this
if the initial translation table doesn't contain an explicit translation for
ctrl-C (is my interpretation correct?).

Would it not be nicer if, for key events, the application was able to add extra
key translations without the widget having to put in every possible
combination of key strokes and modifiers? I suppose the same should go for
button events as well.

This is a little confusing, I hope you understand what I am trying to say!!

Julian Payne, European Silicon Structures (ES2)
(payne@latlog.uucp)

swick@ATHENA.MIT.EDU (Ralph R. Swick) (06/28/88)

    Date: Tue, 21 Jun 88 13:46:33 -0100
    From: mcvax!latlog!PAYNE@uunet.uu.net

    using the text widget I want to add another action called interrupt (say)
    and bind it to ctrl-C (say). However it appears that I can not do this
    if the initial translation table doesn't contain an explicit translation for
    ctrl-C (is my interpretation correct?).

Your interpretation is incorrect.  XtAugmentTranslations and
XtOverrideTranslations will add a binding for any event sequence
you care to specify.  In the case of the Athena text widget, there
is a binding for every KeyPress event so you will need to use
XtOverrideTranslations to force any new key binding to replace
the default one.