r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[View] discuss view related issues

Maxim
24-Feb-2010
[9635]
MESSAGE TO ALL  :-)


I've finally found the way to drastically improve the overzealous 
mouse event handling within the lowest level of view directly without 
causing any noticeable side-effects in the normal face event handling.

its a small patch in view's wake-event function.


the only requirement is that you have at least one face (usually 
the window, if you can) which has a rate set to the response you 
need...  usually around 15 -20 is enough.


this makes face scrolling based on mouse mouse VERY smooth as there 
is no more lag ... which occurs because we can receive 2 to 3 times 
more events than view/AGG can refresh itself.

if you need this, please speak up, I'll gladly offer the recipe.
Cyphre
24-Feb-2010
[9636]
Maxim, why you aren't using the event compression technique from 
Gariele+Romano?
Maxim
24-Feb-2010
[9637x2]
cause I don't know about it  :-)


and any I've tried before (which might include this one, I don't 
recall) created problems which forced me to adapt my code.
using the rate, I can with almost perfect precision measure that 
there will never be more mouse events than the rate which is set.
Cyphre
24-Feb-2010
[9639]
check this one: http://www.rebol.org/view-script.r?script=eat.rnot 
sure if the script is up-to-date but the technique described in it 
works pretty well.
Maxim
24-Feb-2010
[9640x5]
and because the rate IS NOT triggered when REBOL is busy, it will 
actually send Less events on its own, making the trick scalable in 
real-time.
I will thanks.
tested...  in 2.7.6, at least, the example windows break up, the 
moment we touch some of the sliders .  ' :-/  


we might need to update the eat-event example for later view releases.
will try something...
no success... still causes errors.
Gregg
24-Feb-2010
[9645]
Max, if the patch is small, can you post it for review?
Graham
21-Mar-2010
[9646]
Anyone know the reasons http://synapse-ehr.com/forums/showthread.php?31-Vid&p=237&viewfull=1#post237
Steeve
21-Mar-2010
[9647x3]
hide is discarded,  because after having done the action, view do 
a show on the face, uhuhuhu.
try this instead.
>>view layout [ mbutton: button "hello" [face/size: 0x0] ]


but you have to remember the size indeed, for further showings of 
the button.
Because the problem may exist with other styles.
i suggest these 2 small mezz in replacement of hide and show.

vanish: func [face][face/size: negate abs face/size show face]
spook: func [face][face/size: abs face/size show face]

>> view layout [ mbutton: button "hello" [vanish mbutton] ]
enjoy :)
Graham
21-Mar-2010
[9650]
Nice .. rebgui doesn't have these issues
Henrik
21-Mar-2010
[9651]
because SHOW is not native in RebGUI.
Ashley
21-Mar-2010
[9652]
It is actually.
Anton
21-Mar-2010
[9653]
Steeve is not quite correct to say that "view do a show on the face". 
It is VID which does the SHOW, which you can see here.
>> print mold get in svv/vid-styles/button/feel 'engage
RebGUI probably does not use this code.
Ashley
21-Mar-2010
[9654]
Correct.
Steeve
22-Mar-2010
[9655]
Right Anton, but I am perjured myself later, saying (the problem 
may exist in other styles). :)
Henrik
22-Mar-2010
[9656x2]
Ashley, sorry, I'm working from the RM-Asset version. :-)
a way around it, would be to do a "soft show": all [face/show? show 
face]. this can be installed in feel/hot in the vid-feel.r file, 
if you have access to the VID sources.


also using size 0 would not work in the VID Extension Kit when resizing.
Nicolas
28-Mar-2010
[9658]
Is there a way to get anti-aliased fonts in an area?
Henrik
28-Mar-2010
[9659]
only by using DRAW and that is quite difficult. (just ask shadwof) 
better to wait for R3 for this.
Nicolas
31-Mar-2010
[9660]
I need to detect capslock and alt-key events.  Does anyone know if 
this can be done?
Pekr
31-Mar-2010
[9661]
I think not ... more about events:

http://www.rebol.com/how-to/feel.html
http://www.rebol.com/docs/view-face-events.html
Nicolas
31-Mar-2010
[9662]
What about R3?
Pekr
31-Mar-2010
[9663]
Not sure low level code changed in that regard ... I will try to 
ask Cyphre. We imo definitely need to add support for combinations 
like ctrl + tab, etc.
Nicolas
31-Mar-2010
[9664x3]
It's unrealistic to expect people to do without alt-keys. They're 
used in practically all programs as hotkey components. With respect, 
there should be a way to do this.
Rebol opens a system port, that is to say a port with scheme 'system, 
but when I look in system/schemes there is no system scheme.
Why doesn't rebol detect alt or capslock?
Pekr
31-Mar-2010
[9667]
I think some keys were excluded, because of cross-platform issues. 
I do remember arguing about it with Holger in the past. We have to 
change it. Some keys might not be so trivial to get to REBOL, but 
we should try ...
ChristianE
31-Mar-2010
[9668x2]
Cross platform compatibility. Not all platforms have/use ALT and 
CAPSLOCK keys. Which was more importend way back when REBOL ran on 
40+ platform.
(oh, Petr beat me)
Pekr
31-Mar-2010
[9670]
View never run on more than a few IIRC - Windows, Linux, initally 
maybe BSD, Amiga ...
Nicolas
31-Mar-2010
[9671x2]
What do you think? Should Rebol detect capslock and alt-down?
I hope rebol will eventually be ported to the android operating system. 
Phones have different keyboards. Will that be an issue?
ChristianE
31-Mar-2010
[9673x2]
Yes, for apps where OS/platform consistency is more importend than 
cross platform compatibility, there is a need for things like thing.
*like thing = like this
Pekr
31-Mar-2010
[9675]
I hope not. I can't see any problem some platfrom not supporting 
e.g. Alt, or Windows key .... it is imo fully upon programmer to 
handle. But not having those key-presses propagated to REBOL is, 
well - stupid ...
Nicolas
31-Mar-2010
[9676x5]
Is there anything that I can do?
Could I theoretically make my own 'system scheme with BIOS calls 
and load it instead of the default one?
In R3 there's system/schemes/system, do you think that could be changed 
to do this?
system/schemes/system: make object! [
    name: 'system
    title: "System Port"
    spec: none
    info: none
    actor: make native! [[port!]]
    awake: make function! [[
        sport "System port (State block holds events)"
        ports "Port list (Copy of block passed to WAIT)"
        /local event port waked
    ][
        waked: sport/data
        loop 8 [
            if not event: take sport/state [break]
            port: event/port
            if wake-up port event [
                if not find waked port [append waked port]
            ]
        ]
        if not block? ports [return none]
        forall ports [
            if find waked first ports [return true]
        ]
        false
    ]]
    init: make function! [[port][
        port/data: copy []
    ]]
]
Is the R3 Host Kit available?
Steeve
31-Mar-2010
[9681]
IIRC, some people have it for testing purpose, if you ask for it 
on "R3 - chat", perhaps you'll get it
Cyphre
31-Mar-2010
[9682]
Nicolas, unfortunately due the system-port bug in R2 it is possibe 
to detect ALT etc. keys only in the Rebol console window.
Pekr
31-Mar-2010
[9683]
Cyphre - and as for R3? btw - what does it have to do with the system 
port? Are all keyboard events captured via a system port, or just 
only special keys?
Cyphre
31-Mar-2010
[9684]
Yes, all system events are captured by system port first. IIRC in 
R3 there is currently no way how to capture non-rebol-defined events 
but in R2 this is possible though only from the console.
I believe the event port capabilities in R3 will be enhanced.