World: r3wp
[View] discuss view related issues
older newer | first last |
Sunanda 19-Dec-2008 [8404] | Sadly, not -- at least not when used like this: rebol [] unview/all hide-popup view layout [button "butt" [request-list "req" [1 2 3]]] |
Henrik 19-Dec-2008 [8405x2] | unview/all must go |
(did not test, but hide-popup replaces unview) | |
Sunanda 19-Dec-2008 [8407] | Does not seem to work either :-( |
Henrik 19-Dec-2008 [8408] | then perhaps we have a bug? |
Gabriele 20-Dec-2008 [8409] | hide-popup first, then unview/all; but it is an unsupported thing you are doing, so you may actually need to reset the internal state. I can hunt it down for you if you need me to. |
Sunanda 20-Dec-2008 [8410] | Thanks....But that still hangs for me under 2.7.6. rebol [] hide-popup unview/all view layout [button "butt" [request-list "req" [1 2 3]]] I'm actually tracking down a bug report from a live application .... I know it's an unlikely sequence of events, but someone out there tried it. It'd be good to have the magic to make it work when they try again :-) |
Anton 20-Dec-2008 [8411x6] | I got it ! (this old $#%& of a bug.) |
WAKE-EVENT DO EVENT is normally expected (via some GUI action) to do HIDE-POPUP, and WAKE-EVENT usually straight afterwards fixes up SYSTEM/VIEW/POP-FACE (ie. setting it to NONE when all requestors are closed). However, when this process is interrupted in DO EVENT (by pressing Escape in the console), then this fix-up is skipped, and POP-FACE remains set. So HIDE-POPUP, issued at the console, will not fix POP-FACE (eg. set it to NONE). This means the next VIEW -> WAKE-EVENT will act as if there is a requestor open, and return the wrong result (FALSE, because the incorrect POP-FACE is not found in the correctly empty POP-LIST), and therefore WAIT will return immediately. The one-line solution seems to be to patch WAKE-EVENT to fix POP-FACE when it's not found in POP-LIST, just before POP-FACE is checked. if all [pop-face not find pop-list pop-face][pop-face: none] ; <--- Added by Anton. Fix POP-FACE when it's not found in POP-LIST (eg. HIDE-POPUP was done at the escaped console, not by WAKE-EVENT DO EVENT, as usual, here). either pop-face [ ... | |
Here is the magic patch. Please test and see if it works for you. I've only tested it lightly. | |
system/view/wake-event: func [port /local event no-btn] bind [ event: pick port 1 if none? event [ if debug [print "Event port awoke, but no event was present."] return false ] if all [pop-face not find pop-list pop-face][pop-face: none] ; <--- Added by Anton. Fix POP-FACE when it's not found in POP-LIST (eg. HIDE-POPUP was done at the escaped console, not by WAKE-EVENT DO EVENT, as usual, here). either pop-face [ if in pop-face/feel 'pop-detect [event: pop-face/feel/pop-detect pop-face event] do event found? all [ pop-face <> pick pop-list length? pop-list (pop-face: pick pop-list length? pop-list true) ] ] [ do event empty? screen-face/pane ] ] system/view | |
A little bit of dancing is required here. | |
Dancing complete. I am now in a state of expectation of the thunderous rain of blessings to be cast upon me. | |
Sunanda 20-Dec-2008 [8417] | That works! Thanks Anton, and Gabriele and Henrik for the help....Especially Anton for the fix! I think the honor is yours in entering it into RAMBO :-) |
Anton 20-Dec-2008 [8418x2] | That's hardly the "thunderous rain" I was expecting, now, is it ? ;) |
Seriously, it needs more testing, especially with nested popups. Anyone got a nested popup example handy they want to try it on ? | |
Sunanda 21-Dec-2008 [8420] | Thunderous rain.....It's impossible to get the kudos you need from just debugging :-) Which one of us has not worked all night to solve a critical problem; and the only real reward is to see that no one even notices when they come to work in the morning? |
Gregg 21-Dec-2008 [8421] | This is really valuable, so make sure it gets posted somewhere that it won't scroll off an be lost. It's fantastic stuff Anton, but only a few people can appreciate it. :-\ |
Anton 21-Dec-2008 [8422x3] | The problem is, it just looks so simple at the end, as you can see in this one-line workaround, used after HIDE-POPUP: hide-popup system/view/pop-face: none |
It just took me ~3 hours to find it, whilst entertaining all sorts of other hypotheses. | |
Gregg, I have it saved in a file, and this group is web-public, at least. | |
Sunanda 22-Dec-2008 [8425] | I spent nearly as long reducing the problem to my 3-line bug report :-) It could have been any one of several other issues in the actual application. Anton, it could and should also live on in RAMBO and the code base for REBOL3. Do you want to RAMBO it, or will I? |
Gabriele 22-Dec-2008 [8426x2] | the pop-face: none was what I meant for "resetting the internal state", but I would have needed to look at the code to find out what was necessary to do. |
Anton, did you look at the commented SDK source, or probed around? The former could have been faster (not that that code is very readable...) | |
Anton 22-Dec-2008 [8428x3] | Sunanda, Ok, I'll submit it to RAMBO as is. (I don't think it has much relevance with R3, though.) Gabriele, Ah.. I forgot to look at the SDK, actually. I'm not in the habit of it. |
To track it down, I patched all functions (and relevant, nested helper functions) involved in Sunanda's example code: VIEW REQUEST-LIST INFORM SHOW-POPUP HIDE-POPUP and finally WAKE-EVENT. I added 30 print statements to all those function bodies (making sure to bind them correctly etc), tracking the control flow, then compared the output before and after escape was pressed. Eventually I found the difference in control flow in wake-event (EITHER POP-FACE ...). | |
Submitted "wake-event pop-face patch" to RAMBO. | |
Pekr 22-Dec-2008 [8431] | Anton - what about submitting to DevBase? |
Anton 22-Dec-2008 [8432] | Done. |
Graham 26-Dec-2008 [8433] | Nice timeline widget in dhtml http://simile.mit.edu/timeline/ |
Reichart 27-Dec-2008 [8434] | It is cool, and it seems to get posted about once a year... |
Graham 27-Dec-2008 [8435] | So, has anyone attempted rewriting it in View? |
Reichart 27-Dec-2008 [8436] | Don't know. We plan to do a version of it for our Gantt. |
Graham 27-Dec-2008 [8437] | timeline is part of MIT's SIMILE project. |
Graham 28-Dec-2008 [8438x5] | Took me ages but I finally managed to get a version of timeline running. |
but because of the async calls, the Rebol micro-webserver can't serve the pages correctly. | |
Works fine with Cheyenne though. | |
Here's an xample of timeline using embedded json data http://www.compkarori.com/timeline/timeline.html | |
All the samples i saw used external data sources. | |
Nicolas 30-Dec-2008 [8443] | can rebol evaluate two user input events at the same time? |
Henrik 30-Dec-2008 [8444] | all input events are queued. |
Nicolas 30-Dec-2008 [8445x3] | I'm trying to build an interface similar to the one in Plan 9 OS, but I've hit this snag. when the left mouse button is down the system doesn't register right mouse button clicks. Can this be worked around somehow? |
is there any way to handle alt keys? | |
is there a way to do mouse chording? | |
btiffin 30-Dec-2008 [8448] | Re; keys. yes? Play around with something like rebol [] set-modes system/ports/input [lines: false] while [ code: input code <> 13 ][ probe code ] set-modes system/ports/input [lines: true] print "--" But I'll admit to being confused. Ctrl-A returns 1, Ctrl-B returns 27, 91, 49, 126, Ctrl-C bails, Ctrl-D prints 4 Alt-A 27 27 97, Alt-B 27 27 98 On my Debian GNU/Linux box 2.7.6 |
Gabriele 31-Dec-2008 [8449x2] | Brian, I think he's asking about View, not the console. |
Nicolas: the mouse buttons problem may be OS related, but I never tested this. | |
BrianH 31-Dec-2008 [8451] | Mouse chording would require the mouse event system to be able to express multi-button mouse events. I'm not sure if R2 has such support (or R3 either but we can fix that). Windows and Linux's event models support chording, though most apps don't use it. Though I don't know, I would be surprised if Mac OS X's event system supported chording - it barely supports more than one mouse button. |
btiffin 31-Dec-2008 [8452] | Yep, I was suggesting that as a method to get at the codes that View might return, but yeah you are correct and now I'll ask, is it a different keyscan engine? Core vs View? |
Gabriele 2-Jan-2009 [8453] | BT, the codes you see at the console are ANSI escape codes, and that has nothing to do with what you get from view, eg. the "home" key sends the 'home word in View but an escape sequence on the terminal. |
older newer | first last |