Hint timing is much too fast

Viewing 20 posts - 1 through 20 (of 25 total)
  • Author
    Posts
  • #69249
    HeDiBo
    Participant

    In the enclosed project, wait for a hint to appear. Then start moving the mouse over and outside of the buttons. New hints appear, but much, much too fast.
    The old hint should disappear when the mouse is moved away from the control. Then there should be a comfortable wait time before the new hint appears. As it is now, hints become annoying very rapidly.
    TsAlphaHints probably needs a number of timer values in published properties, to enable careful customization.

    Attachments:
    You must be logged in to view attached files.
    #69251
    HeDiBo
    Participant

    This little screen captured gif shows how annoying the quick recurrence of hints is.

    Attachments:
    You must be logged in to view attached files.
    #69253
    HeDiBo
    Participant

    Here’s another example of how annoying these hints are.

    Attachments:
    You must be logged in to view attached files.
    #69262
    Support
    Keymaster

    But this behavior is standard? Or I don’t understand a problem?

    #69273
    HeDiBo
    Participant

    No, this behavior is far from standard. Start an Explorer window and hoover over the top buttons. There is a delay of two seconds between the showing of the hints. In your implementation this is 0.1 second.

    #69287
    Support
    Keymaster

    I meant standard hints in the Delphi applications.
    Behavior is equal.

    Attachments:
    You must be logged in to view attached files.
    #69289
    Support
    Keymaster

    Same behavior I see in system buttons of the file explorer.

    Attachments:
    You must be logged in to view attached files.
    #69298
    HeDiBo
    Participant

    I’m on holiday for a few days. When I’m back I’ll get to the bottom of this.

    #69302
    Stephane Senecal
    Participant

    Same behavior I see in system buttons of the file explorer.

    As we can see in Windows Explorer, there is a delay before the first hint is displayed, but when a hint is showing it updates immediately if it encounters another control.

    I think HeDiBo means that there should be a delay before the first hint is shown.

    In Delphi there is the option Application.HintPause which is the delay before showing a hint (default to 500 milliseconds).

    Stephane Senecal
    CIS Group
    Delphi programmer since 2001

    #69303
    HeDiBo
    Participant

    As far as I can remember on my holiday, the 500 msec delay is the only timing that can be adjusted in TsHintManager. I have changed it to 1000. But that timing is not honored anymore, after the first time a hint is shown.

    #69307
    HeDiBo
    Participant

    I was mistaken. I changed the value form 5000 to 10000, to get a longer reading period.

    That means two timing value properties could be added: the time for a first hint to appear (HintPause), the time between hints if moving over controls (HintShortPause).
    The Application hint values can be set but they would be nicer as properties of TsAlphaHints.

    #69308
    Lasse
    Participant

    Don’t remember exactly but I had to put a comment here:

    procedure TsAlphaHints.OnCheckTimer(Sender: TObject);
    begin
    ...
        // Lasse Application.HintPause := Manager.FOldHintPause;

    Otherwise I could not change it.

    #69309
    HeDiBo
    Participant

    Don’t remember exactly but I had to put a comment here:

    procedure TsAlphaHints.OnCheckTimer(Sender: TObject);
    begin
    ...
        // Lasse Application.HintPause := Manager.FOldHintPause;

    Otherwise I could not change it.

    Which shows, timing of hints needs a overhaul.
    At the end of

    procedure TsShowTimer.Init(HintForm: TacCustomHintWindow; w, h: integer);

    there is a very suspicious:

    Application.HintPause := 100;

    • This reply was modified 4 years, 1 month ago by HeDiBo.
    • This reply was modified 4 years, 1 month ago by HeDiBo.
    • This reply was modified 4 years, 1 month ago by HeDiBo.
    #69316
    HeDiBo
    Participant

    I have made this into a change request: #69315

    #69318
    HeDiBo
    Participant

    Because of the awful mess this forum system makes of the user’s contributions, I had to redo the change request in #69317

    #69334
    Support
    Keymaster

    Hello, Dick!
    Sorry, I was trying to fix broken record with your requests, but have deleted it accidentally.
    ____

    >> HintPause is totaly screwed in TsAlphaHints. So much that it is almost senseless to set Application.HintPause

    This pause works as expected. Maybe it doesn’t work with disabled controls (new HandleDisabledCtrls property), I will check it.

    I will think about the HintShortPause property. This short timing is defined by system. System is showing a hint, the package just add skinning there.

    #69345
    HeDiBo
    Participant

    HintPause (the timing before a hint appears) becomes almost none. You can see that in the GIF of #69251
    HintHidePause (the timing of the hint showing if mouse doesn’t move) should really be depending on the time needed to read the hint. Because your hints can be quite complex, this is more necessary than ever.
    HintShortPause should really be a published property of TsAlphaHints. Hints come in rapid succession if a hint follows another one. To temper that, the HintShortPause timing is used.

    By publishing the timing properties in TsAlphaHints one can easily adjust the timing carefully and it looks nice and logical.

    #69375
    Support
    Keymaster

    I have made several test-apps concerning delays in Delphi’s hints and see that some problems exists there (without AlphaSkins). The Application.HintPause works good if value is smaller than 500 ms. If this value is bigger then real value of the first showing delay is changed randomly. For example, if I set 550 ms there, then delay may be 2 or more seconds. I have checked a code in the RAD Studio VCL and I see a reason of this issue, seems. Hint is cancelled in the TApplication.HintMouseMessage(Control: TControl; var Message: TMessage), but shouldn’t. After a hint canceling a new timer is started again and this situation may be repeated.
    So, AlphaHint is a skin for standard hints and same delay used there (Application.HintPause)

    Also, HintShortPause used in AlphaHints and works correctly except on disabled controls when HandleDisabledCtrls property is True. At this moment I haven’t idea how to add a small delay before showing of hint there.

    #69389
    HeDiBo
    Participant

    Timing is only a big problem if HandleDisabledCtrls is True.
    Especially the timing problem shown at #69251 goes away if this property is set to False.

    #69440
    HeDiBo
    Participant

    Things have surely changed in AC 15.15
    Now hints will not show without pause (that’s good). But they may not show at all (that’s bad).
    As always: only a problem if HandleDisabledCtrls is True

Viewing 20 posts - 1 through 20 (of 25 total)
  • You must be logged in to reply to this topic.