So this is what I had said, do not depend on the default button command. On May 30, 2015 1:52 AM, "'Pascal Jasmin' via General" < [email protected]> wrote:
> small typo in my fixed code. Here is an example with "easy" default > handler behaviour (F8 will run from clipboard) > > showevents_jqtide_ 1 > wd 'reset' > wd 'pc a closeok escclose' > wd 'cc t edit' > wd 'cc tm editm' > wd 'cc one button' > wd 'cc two button' > wd 'cc three button' > wd 'pshow' > a_t_button =: a_one_button =: smoutput bind 'one clicked' > > > > ----- Original Message ----- > From: 'Pascal Jasmin' via General <[email protected]> > To: "[email protected]" <[email protected]> > Cc: > Sent: Friday, May 29, 2015 12:57 PM > Subject: Re: [Jgeneral] wd button default > > actually, with this code (default removed) > > showevents_jqtide_ 1 > wd 'reset' > wd 'pc a closeok escclose' > wd 'cc one button' > wd 'cc two button' > wd 'cc three button' > wd 'pshow' > > pressing enter does nothing. space still executes the first button, and > tab will change which button responds to space. > > though I did find a solution in this code: > > showevents_jqtide_ 1 > wd 'reset' > wd 'pc a closeok escclose' > wd 'cc t edit' > wd 'cc tm editm' wd 'cc one button' > wd 'cc two button' > wd 'cc three button' > wd 'pshow' > > a_t_button (did not know it existed) gets fired when enter is pressed in > the edit control, and no event is fired when enter is pressed in editm > (though most other chars are... minor issue not worth worrying about), so a > straightforward solution to proper default button behaviour is to define > edit_button handlers to forward their event to "ok_button". This even > provides the most flexible possible choices with one good idea being to > validate just that field even if OK/save validates all fields. > > ----- Original Message ----- > From: chris burke <[email protected]> > To: General forum <[email protected]> > Cc: > Sent: Friday, May 29, 2015 12:23 PM > Subject: Re: [Jgeneral] wd button default > > As mentioned, it makes no difference whether the button is set to default > or to autodefault. Also, the same behaviour is seen in plain Qt. > > In an ordinary (non-dialog) form, when setting a single control, default > and autodefault should mean the same thing. > > On 29 May 2015 at 09:14, 'Pascal Jasmin' via General < > [email protected]> > wrote: > > > The reason the your example works is that default is actually setting > > autodefault, which just affects whether a button will respond to enter > when > > it has focus. Your form sets the first button as focused on show. If > you > > press tab, then space, other button events can be fired, but they do not > > respond to enter. > > > > autodefault is an extremely minor convenience at best, and probably a bad > > programming idea. (The user actually prefers that enter always triggers > > the OK/Save record action, and tab tab ... space is much faster one > handed > > data entry) > > > > > > > > > > ----- Original Message ----- > > From: chris burke <[email protected]> > > To: General forum <[email protected]> > > Cc: > > Sent: Friday, May 29, 2015 12:03 PM > > Subject: Re: [Jgeneral] wd button default > > > > Qt's treatment of button default is a mystery to me. > > > > If the first button is set to default, then pressing Enter will trigger a > > JQt button event. Try: > > > > showevents_jqtide_ 1 > > wd 'reset' > > wd 'pc a closeok escclose' > > wd 'cc one button default' > > wd 'cc two button' > > wd 'cc three button' > > wd 'pshow' > > > > If any other button is set to default, then just pressing Enter after the > > form is displayed will not trigger a Jqt button event. However, if you > > first click the button, then pressing Enter afterwards triggers the > button > > event. > > > > This behaviour can be reproduced in Qt, outside of JQt, i.e. just create > > the buttons and set one as default: > > > > ... > > QPushButton *b0=new QPushButton("B0"); > > QPushButton *b1=new QPushButton("B1"); > > QPushButton *b2=new QPushButton("B2"); > > b0->setDefault(true); > > ... > > > > So JQt is just reproducing the standard Qt behaviour. Perhaps we are just > > missing something that needs to be done first. > > > > > jqt will setAutoDefault(true) for the default button. but I am not sure > > if setDefault(true) should be used instead (I'm too slow to understand > the > > documentation). Also the parent form in jqt is not a QDialog, instead it > > is a top level QWidget without any parent, so I don't know if default > > button can apply. > > > > The same behaviour is seen whether we set Default or AutoDefault. For a > > normal form (non-dialog), AutoDefault is off by default, so this is not > an > > issue. > > > > > IIRC the problem with form_enter in jqt is that it is always triggered > > whenever an Enter key has been pressed, no matter the child control had > > processed it or not. If you examine the event log, you might notice > this. > > > > In JQt if a button gets a click event on pressing Enter, then the Form > does > > not get an Enter event. > > > > > > On 29 May 2015 at 08:54, 'Pascal Jasmin' via General < > > [email protected]> > > wrote: > > > > > AutuDefault = true causes a button that has the focus (space key will > > > execute it) to also respond to enter key, even if there is a default > > button > > > defined. It is a very minor interface feature that few people use, and > > > arguably a bad idea (If I want to tab to a button to execute it with a > > key, > > > the space bar is much bigger and easier to hit, its a standard with all > > > applications, and if I hit enter, I can still access the main ("OK") > > > application function. > > > > > > Default = true is very much like form_enter. The enter key forwards a > > > call to the button handler. > > > > > > The problems you mention with form_enter seem fairly minor. There are > 2 > > > general interface standards for dealing with the enter key on a form > that > > > has say a multiedit control or table cell or other control that > responds > > to > > > enter: > > > > > > 1. Force user to hit ctrl-Enter to send Enter key to control (if there > is > > > a form_enter handler. Otherwise Enter key works as in jqt now). This > > > solves the issue that probably exists in that the form gets keystrokes > > > first, and there is no easy way to "rebroadcast" a key stroke if it > > should > > > be captured by a control. In terms of the wd system, this could be > > > relatively straightforward as "if form_enter defined, then only capture > > > enter and not ctrl-enter". This is not terrible UI, even if not > > completely > > > standard. Very easy for form developer to handle (just forward to OK, > or > > > don't have a form_enter definition.) The don't have a form_enter > handler > > > is the best idea for say an email composition form: Even if the enter > > key > > > could be unambiguously used to trigger the Send action in the to and > > > subject fields, just don't have a form_enter handler is the best > advice. > > > > > > 2. Manually check in form_enter if special controls have focus and then > > > either choose to call the OK button or other response to Enter, or > > insert a > > > linefeed at the select point of that control. This may be the most > > > standard UI, but its also generally a bad idea for most user > expectations > > > of enter key on your form: They for sure want enter to add a newline > in > > > the message body; They don't want enter to sometimes trigger "Send/OK" > > > because that action almost always creates irreversable world wide side > > > effects. Often your OK (or Send) button has a form-wide shortcut, but > > the > > > user expects that enter will create newlines... even in the To: field, > > the > > > user might hope that the enter key makes the field taller so as to > enter > > > more names (but that is easily supported by an initially short To: > > > multiline field). Basically, the user does not know if an edit field > is > > > multiline or not, just because it is initially 1 row high. > > > > > > So alternative 1 seems like it could be easiest, and happens to cover > all > > > useful programming applications where form_enter is a desired feature. > > > ctrl-enter interface is useful for data entry forms, where entering > > > linefeeds is a rare action in "comments/Notes" fields, but record save > > is a > > > common action that needs easy access after changing any field. > > > > > > If the solution is difficult, consider: > > > > > > wd 'mb input text "enter password" "password: " ' > > > > > > which does work as wd 'cc OK button default;' should on a form. > > > > > > Perhaps a useful alternative would be if this syntax (or equivalent > > > alternative) did not give an error > > > > > > wd 'mb input text password "enter password" "password: " ' > > > > > > basically users expect the enter key on a password form will submit it, > > > but also expects that the text stays dotted/hidden. Perhaps also the > > point > > > that there is no wdq trace of the plaintext password has application > > > security benefits, and the data can be made never accessible outside > of a > > > local function storage also has security benefits. > > > > > > The ideal implementation of 'button default' would be: > > > > > > Not use the qt behaviour. Instead auto create form_enter verb that > calls > > > button_name_handler, and does not get triggered by ctrl/alt/shit enter. > > > But this ideal is followed very closely with just allow manual > > form_enter, > > > and remove the default property for buttons presuming that no one has > > found > > > a useful effect for it in jqt. > > > > > > Currently controls don't respond to ctrl-enter. Ideally they would, to > > > cover the data entry scenario (most common worldwide form programming), > > but > > > ctrl-enter does show up in sysdata (I believe) so it is possible for > form > > > programmer to handle it outside of form_enter. > > > > > > > > > ----- Original Message ----- > > > From: bill lam <[email protected]> > > > To: General forum <[email protected]> > > > Cc: > > > Sent: Friday, May 29, 2015 3:44 AM > > > Subject: Re: [Jgeneral] wd button default > > > > > > jqt will setAutoDefault(true) for the default button. but I am not > > > sure if setDefault(true) should be used instead (I'm too slow to > > > understand the documentation). Also the parent form in jqt is not a > > > QDialog, instead it is a top level QWidget without any parent, so I > > > don't know if default button can apply. > > > > > > IIRC the problem with form_enter in jqt is that it is always triggered > > > whenever an Enter key has been pressed, no matter the child control > > > had processed it or not. If you examine the event log, you might > > > notice this. > > > > > > > > > On Fri, May 29, 2015 at 3:06 PM, 'Pascal Jasmin' via General > > > <[email protected]> wrote: > > > > > > > > > > http://stackoverflow.com/questions/11887938/how-to-make-a-qpushbutton-pressable-for-enter-key > > > > > > > > default in qt is supposed to make a button (intended behaviour) > respond > > > to form_enter as well. When I add that property though, it disables > the > > > code behind the button (it in fact erases the button handler from the > > > form), though the wdq list looks the same. (the button no longer > responds > > > to mouse clicks, and still doesn't react to enter key) > > > > > > > > Perhaps it is a relatively easy fix to avoid erasing the button > > > handler. I can add it after the form is created, but I seem to have > > > trouble getting the locales right. > > > > > > > > > > > > ----- Original Message ----- > > > > From: bill lam <[email protected]> > > > > To: General forum <[email protected]> > > > > Cc: > > > > Sent: Friday, May 29, 2015 12:57 AM > > > > Subject: Re: [Jgeneral] wd button default > > > > > > > > there was a form_enter event in j602 which should be what you want, > but > > > it > > > > is difficult to duplicate in j803. > > > > > > > > there may be some bug in default button or it is the behavior under > Qt. > > > I > > > > am not sure because I have never used default button (j6 or j8). > > > > > > > > I would suggest not to depend on these features (form_enter or > default > > > > button). > > > > On May 29, 2015 12:13 PM, "'Pascal Jasmin' via General" < > > > > [email protected]> wrote: > > > > > > > >> thanks Chris, > > > >> > > > >> I don't see anything useful happening as a result of adding a > default > > > >> property to a button. > > > >> > > > >> I can see that defining a __default function does intercept > keystrokes > > > in > > > >> 'sysdata' but the enter key does not get "captured" (though > backspace > > > >> does). Strangely, pressing the enter key repeats the last key that > > was > > > in > > > >> sysdata. > > > >> > > > >> Is there a recommended way to tell if the enter key has been > pressed? > > > >> > > > >> > > > >> > > > >> > > > >> ----- Original Message ----- > > > >> From: chris burke <[email protected]> > > > >> To: General forum <[email protected]> > > > >> Cc: > > > >> Sent: Thursday, May 28, 2015 9:51 PM > > > >> Subject: Re: [Jgeneral] wd button default > > > >> > > > >> Usually you want to handle wd events. Use showevents_jqtide_ to > > display > > > the > > > >> events in the session. If displaying wdq, note that the first 3 rows > > > show > > > >> the event handlers. These are searched in order and the first one > > found > > > >> will be executed. > > > >> > > > >> Escclose simply means that pressing Esc will signal a cancel event. > If > > > you > > > >> also set closeok on the parent, then pressing Esc will close the > form > > > >> without an event, for example the image form in the Qt demos has > this > > > >> property. > > > >> > > > >> > > > >> On 28 May 2015 at 14:52, 'Pascal Jasmin' via General < > > > >> [email protected]> > > > >> wrote: > > > >> > > > >> > I don't think that the 'button default' command works or works > > > sensibly. > > > >> > In the jqt controls demo, neiter escape nor enter closes the form > > > despite > > > >> > the cancel button having the default property set, and escclose is > > > also > > > >> set > > > >> > on the form. > > > >> > > > > >> > From peeking at wdq, it appears as though I might need to create a > > > verb > > > >> > called default for my form? > > > >> > > > > >> > How I expect it to work.... pressing enter while on a control that > > is > > > not > > > >> > multiline edit, should execute the code already assigned to the > > button > > > >> > marked as default. ideally, the escclose property should be > > > attachable > > > >> to > > > >> > a button, and pressing escape runs the same code that clicking on > > the > > > >> > "cancel" button would do. > > > >> > > > ---------------------------------------------------------------------- > > > >> > For information about J forums see > > > http://www.jsoftware.com/forums.htm > > > > > > > > > > > > > > >> > > > >> > > > > >> > ---------------------------------------------------------------------- > > > >> For information about J forums see > > http://www.jsoftware.com/forums.htm > > > >> > ---------------------------------------------------------------------- > > > >> For information about J forums see > > http://www.jsoftware.com/forums.htm > > > >> > > > > > ---------------------------------------------------------------------- > > > > For information about J forums see > http://www.jsoftware.com/forums.htm > > > > > ---------------------------------------------------------------------- > > > > For information about J forums see > http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
