Announcement

Collapse
No announcement yet.

RR should unset the hover state of buttons after a timeout.

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • RR should unset the hover state of buttons after a timeout.

    I find myself often driving around with a button stuck highlighted in blue. That happens even if I deliberately use the touch screen to move the mouse pointer over a non-button element (e.g. the track title or the logo space). So there are two suggestions:
    1. Don't leave the last button highlighted if the mouse has left it.
    2. Even if the mouse pointer hasn't left the button, turn off the highlighting after some timeout (possibly configurable - immediate or almost immediate might make sense for a touchscreen).

    Thanks.
    Progress: 80% - Permanent install left.
    Motion LS800 Tablet PC and dock.
    Vista, Bu-535 GPS, RoadRunner, MPT2006.

  • #2
    I addition to this problem, I have found that it is possible to place the cursor between two buttons, and have RR flicker back and forth between them.

    Comment


    • #3
      Yes, I've seen that too. RR then uses a bunch of cpu whilst it's doing it.
      Progress: 80% - Permanent install left.
      Motion LS800 Tablet PC and dock.
      Vista, Bu-535 GPS, RoadRunner, MPT2006.

      Comment


      • #4
        The reason that happens is because of a badly designed skin -- if you correctly set the areas of the buttons, this should not happen.. Arathranar, you should try running WMP9/10 and check out processor usage while doing so.. then be glad RR uses as much CPU as it does right now..
        Ride Runner RR's Myspace

        "Being happy is not about having what you want, it's about wanting what you have."
        "The best things in life are always free - but that doesn't mean money can't buy you good things."

        Comment


        • #5
          Maybe. But just because WMP sucks doesn't mean we should every be satisfied with the performance of other apps . Anyway, I'll stick my money where my mouth is and see if I can work out how to optimize RR's perf. If I can't, I'll shut up about it
          Progress: 80% - Permanent install left.
          Motion LS800 Tablet PC and dock.
          Vista, Bu-535 GPS, RoadRunner, MPT2006.

          Comment


          • #6
            What is the point of "hover" in a touch screen application anyway ?
            [H]4 Life
            My next generation Front End is right on schedule.
            It will be done sometime in the next generation.
            I'm a lesbian too.
            I am for hire!

            Comment


            • #7
              Mostly I see the value as confirmation of a click. Hence the desire to have the 'hover' feedback time out. Maybe we should make that an explicit behavior though - the user chooses touch or mouse behavior. Touch gives you click feedback of buttons presses. Mouse gives you continuous hover feedback. But I think the timeout really addresses both well.
              Progress: 80% - Permanent install left.
              Motion LS800 Tablet PC and dock.
              Vista, Bu-535 GPS, RoadRunner, MPT2006.

              Comment


              • #8
                Here is the fix for issue 1 above (button remaining highlighted even when the pointer has moved out of it).

                Note that I have commented out lines of the following form since they are wholly unecessary (the previous InvalidateRect calls generates the correctly formed WM_PAINT windows messages):
                Call SendMessage(Me.hwnd, WM_PAINT, 0, 0)
                I've done this throughout the project and have not yet noticed any side effects.

                What I have not yet worked out is why you need those ValidateRect() calls preceding the InvalidateRect() calls. They should not be necessary either but disabling them causes your labels to suddenly become very flashy and I don't know why that is happening yet. My current assumption is that it's a subtle bug elsewhere in the code.

                I haven't yet worked out why the flashing Mute button uses up so much cpu since the code is basically doing what it should - invalidating only the changed portions of the skin - as far as I can tell so far. It simply shouldn't be as expensive as it is.

                My rr.exe files is either ~350k if I compile as P-code or ~850k if I compile native. The one in your download is only ~223k. What's causing the huge difference in size?
                Attached Files
                Progress: 80% - Permanent install left.
                Motion LS800 Tablet PC and dock.
                Vista, Bu-535 GPS, RoadRunner, MPT2006.

                Comment


                • #9
                  What I have not yet worked out is why you need those ValidateRect() calls preceding the InvalidateRect() calls. They should not be necessary either but disabling them causes your labels to suddenly become very flashy and I don't know why that is happening yet. My current assumption is that it's a subtle bug elsewhere in the code.
                  This is EXACTLY WHY those calls are there -- to prevent labels from flashing.

                  I haven't yet worked out why the flashing Mute button uses up so much cpu since the code is basically doing what it should - invalidating only the changed portions of the skin - as far as I can tell so far. It simply shouldn't be as expensive as it is.
                  This is VB -- there's NOTHING fast about it.. probably the PaintPicture procedure is at fault (specialy when scaling is being used).. I just didn't want to go throgh the trouble of using API calls when the result was fairly decent as it is.. honestly I don't know what all the fuss about speed/cpu usage is.. you've always had the option to turn off those things and save your 2% CPU extra usage..
                  In any case, I appreciate the help in trying to firgure out ways of improving the performance (yet more) from what it was in MediaCar..
                  Ride Runner RR's Myspace

                  "Being happy is not about having what you want, it's about wanting what you have."
                  "The best things in life are always free - but that doesn't mean money can't buy you good things."

                  Comment


                  • #10
                    Originally posted by frodobaggins
                    What is the point of "hover" in a touch screen application anyway ?
                    I've asked myself the same question... then also the question about: "why do we need an empty image for the skins ?"

                    Here's the answers I came up with:

                    -Hover on touchscreen is basically for NOTHING.. BUT, it is a very nice feature to have when you DON'T have a touchscreen and use the keyboard to use the software (it is the only way to know which object is selected on the screen). Without it, the only way of controlling the software through the keyboard would be to assign each key (or combination) a specific function -- this would require lots of keys as opposed to a few needed to control the software using hovering/highlighting.. It is surely possible to make the highlight by code, but that makes everything look ugly too..

                    -The Empty screen.. this is a very basic concept but hardly ever used.. basically it allows the users to hide buttons from the screen when they don't intend to use them.. For instance, if one doesn't have a TV tuner, without editing the images one could go on the skin definitions and comment out the TV button, which would then make the software display the "EMPTY" backgroud as if the button never existed... The problem with this is that typically, people don't want less buttons, but instead, they want MORE..

                    I built support for all the above knowing that at least SOME people would want it... I for one, don't use any of the above.. in fact, I hardly use half the features I've implemented so far (not even simple stuff like ID3 support)..
                    Ride Runner RR's Myspace

                    "Being happy is not about having what you want, it's about wanting what you have."
                    "The best things in life are always free - but that doesn't mean money can't buy you good things."

                    Comment


                    • #11
                      Originally posted by guino
                      This is EXACTLY WHY those calls are there -- to prevent labels from flashing.
                      That's what I discovered. Hence, in my previous change there's a missing ValidateRect() call for the new code to unset the button on hover out in order to stop flashing in that scenario. However, those calls to ValidateRect() shouldn't be necessary. I'll keep digging to see if I can work out why they are needed with the current code since it intrigues me.
                      Originally posted by guino
                      This is VB -- there's NOTHING fast about it.. probably the PaintPicture procedure is at fault (specialy when scaling is being used).. I just didn't want to go throgh the trouble of using API calls when the result was fairly decent as it is.. honestly I don't know what all the fuss about speed/cpu usage is.. you've always had the option to turn off those things and save your 2% CPU extra usage..
                      Well, after reviewing the cpu usage actually on my Car PC, I'm more inclined to agree with you. I see 2-5% cpu usage with the flashing mute button versus 8-25% on my Tablet PC! My Car PC is faster (AMD1900+ vs P3-866) but I wouldn't have expected such a big difference in perf. My Tablet PC does have a really crappy video chip so that could be contributing. 2% is a much more reasonable amount of cpu usage for what's happening.
                      Progress: 80% - Permanent install left.
                      Motion LS800 Tablet PC and dock.
                      Vista, Bu-535 GPS, RoadRunner, MPT2006.

                      Comment


                      • #12
                        The Empty screen
                        So that's what it's for! I had been wondering. I can see why people wouldn't bother - hiding the buttons would make a skin really ugly. Better to have them present but unclickable in my opinion.

                        I have been wondering about adding options in the skin definition files for adjustable button lists so you can easily alter the contents and still have it look good.
                        Progress: 80% - Permanent install left.
                        Motion LS800 Tablet PC and dock.
                        Vista, Bu-535 GPS, RoadRunner, MPT2006.

                        Comment


                        • #13
                          Originally posted by archimense
                          I addition to this problem, I have found that it is possible to place the cursor between two buttons, and have RR flicker back and forth between them.
                          My fix above basically stops this too as a side effect even with a badly set up skin.
                          Progress: 80% - Permanent install left.
                          Motion LS800 Tablet PC and dock.
                          Vista, Bu-535 GPS, RoadRunner, MPT2006.

                          Comment


                          • #14
                            Originally posted by Arathranar
                            That's what I discovered. Hence, in my previous change there's a missing ValidateRect() call for the new code to unset the button on hover out in order to stop flashing in that scenario. However, those calls to ValidateRect() shouldn't be necessary. I'll keep digging to see if I can work out why they are needed with the current code since it intrigues me.
                            The reason is simple: VB Invalidates the WHOLE window when you draw something on it.. that causes all objects in it to redraw/flash... as I mentioned in my message, VB sucks..
                            Ride Runner RR's Myspace

                            "Being happy is not about having what you want, it's about wanting what you have."
                            "The best things in life are always free - but that doesn't mean money can't buy you good things."

                            Comment


                            • #15
                              Where do the labels / slider thumb get drawn? I'm struggling to work those out.
                              Progress: 80% - Permanent install left.
                              Motion LS800 Tablet PC and dock.
                              Vista, Bu-535 GPS, RoadRunner, MPT2006.

                              Comment

                              Working...
                              X