No announcement yet.

Button release behavior

  • Filter
  • Time
  • Show
Clear All
new posts

  • Button release behavior


    On iOS and Android when the user touches a button and still has not released it but decides to go off the button, i.e. slides outside the button and then releases, the button is NOT triggered.
    On Visi-Genie buttons behavior seems to be different, whenever I touch a button, move outside while still touching and then release, the button will still be triggered, which users do not expect.
    wonder if there is a way to change this behavior in Visi Genie?


  • #2
    Hi Anguel,

    Good Day.

    There is no way to change the behavior of the buttons in ViSi-Genie. It can be possible using ViSi-Genie Magic or ViSi.

    I hope this helps.

    Best Regards,


    • #3
      Thanks, Ferdinand. I expect it would require a check if the position "on release" is outside the object and this way to disable the event triggering. However, I don't have any experience with the 4D specifics. It would be really great if your experts can tell if this is possible at all with Genie Magic or maybe write a short Visi Genie example? Thanks a lot in advance!


      • #4
        Unfortunately, as stated in this 6 years old post the whole behavior is buggy:
        It is even worse than expected, because you can touch anywhere on the screen and drag over any button accidentally, this will immediately activate the button! This is simply unacceptable for something we need to sell to customers.
        As stated in the other thread, I really expect to see a working solution to the problem, because this is something that can really cancel a running development for multiple devices. This is simply incorrect button behavior.
        Last edited by Anguel; 8 July 2020, 05:00 AM.


        • #5
          Hi Anguel,

          Sorry to jump in here. The touch behaviour isn't buggy and wasn't based on any other technology, It is based on our code less Visi-Genie environment. We provide many programming environments so the user can fine tune the display to their needs and as such anything is possible. Since Visi-Genie has been around for many years it's simply something we cannot change to suit individual needs as it would cause issues to users already using these routines but we do have the Magic code to give the ability to modify the behaviour of the Visi-Genie environment to suit and this works very well.

          Both Ferdinand and myself are working on a solution to this in Magic touch, move and release functions but it is taking time as we have to make it so it isn't attached to a single object and is still a work in progress.

          I find that if I have a particular requirement of an application, I have to consider the pros and cons of using Visi-Genie with a lot of Magic code or go straight for the Visi environment which in the end can make things simpler if the Visi-Genie path isn't suitable as you have your own control of touch, a Serial protocol of your choice if needed and the ability to think outside the box to create the perfect application. The video I shared with you is a Visi project as I knew I needed some special behaviour and my own string boxes that allowed a draw and delete on top of an image.

          Having said that, the Visi-Genie environment with a lot of Magic code can create the most professional looking and fully functional application which is used in many devices with commercial applications. Visi-Genie with Magic code is also a very good learning tool for the Visi environment as the in depth knowledge of how things work in Visi-Genie can then be used as code in Visi.

          Getting back to touch. Touch controllers work on the method of there will be a touch and then there may be a move and then a release. Once a touch has been received the next touch event will either be a move or many moves and then a release so say for example Visi-Genie has detected a touch but there is Magic code in the mainloop also checking touch, the mainloop code may get the release that Visi-Genie was waiting for after a touch event which causes the issue you experienced and mentioned in another post. Again this isn't buggy behaviour but something you have to consider when using touch routines in Magic code.

          I hope this helps

          Best regards



          • #6
            Hi Paul,

            Thanks for jumping in here and for the explanation! I think most users that use your displays really appreciate the complete visual development + hardware solution you offer, although there might be more powerful, more "modern" or cheaper solutions out there. Of course I expected drawbacks with the limited GPU, outdated look of standard objects, non-aliased strings, the non-standard programming language (who wants to learn another one these days?) and the proprietary visual environment. I spent many many days digging into things and looking through your indefinite docs, appnotes and forums to find out how things work.

            Unfortunately, as I got deeper into development I notice more unsolved problems that other users also reported in the past. I can accept many of these drawbacks but on the other hand I simply cannot accept basic button behavior that differs from any other GUI OS out there. Just imagine a user accidentally dragging over a button and turning on some external hardware device just by not expecting this kind of behavior, because it does not exist in any touch (or even non-touch) device he has ever used. Meanwhile, I unfortunately get the impression, that the visual development is meant mainly for hobby use, which I had not expected, regarding the fact, that it is available since many many years and has a huge potential to cover so many tasks, including the new PRO functions.

            Going down to Visi and learning everything from scratch will be too much effort and will put back our projects so far behind that we would rather consider a different display solution :-( Adding a couple of lines magic code is one thing, creating a new com protocol and programming from scratch in a new programming language used nowhere else is a different thing. Hey, it's not our main device, it's just the display we want to make work.

            I understand, that many users got used to the "old" behavior but why not just add an option like "New button touch behavior" or something similar that can be optionally turned on? Or maybe some new objects? A button is one of the most basic things in UIs. Look at how buttons behave in other OS and just make them this way. I expected this from a modern intelligent display with its own visual environment.
            I would even go that far and throw away my magic code in favor of normally working buttons that only fire if touch + release are INSIDE the button and not anywhere else. The current behavior also interferes with magic move events as far as I can see. This is again related to the fact that the button fires as soon as I drag over it: Instead of touch-moving to the next form, I get a confusing button activation activating a different form...
            Another thing I don't understand is why it is not just possible to fire an event from any visual object, that would make things so much easier for the end-user and so many users happy. Look at Android and iOS - all their settings are simple touchable strings! Who cares if a string is output-only or not, one should be able to touch it and report this to the host. There just seem to be too many things that work in an unexpected way in 4D and we have to work around them. I am not writing all of this to criticize but I see a lot of potential in your approach, just if some things would work more in a standard, expected way would be great and make it usable for modern professional products. And you get so much valuable feedback from other users in these forums.

            Please update me on your work in progress, it would be really nice if we can get proper button behavior on the displays.




            • Anguel
              Anguel commented
              Editing a comment
              For now, I will be happy if you have some magic code that "fixes" button behavior for Winbuttons only.
              As I said above, I will accept a compromise to not be able to use other magic code in parallel at the moment.
              Thanks again!