Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

Pane Pain

 [1/3] from: sanghabum:aol at: 30-Sep-2001 6:06


I asked this a few weeks ago, and I think maybe my question got lost in the general excitement. I still haven't worked it out for myself, so I hope you don't mind if I ask again. I have two separate panels. One's a floating control panel and the other is the user's main display. When they click a control button panel, focus should go to a field on the main display. The only way I can find to do this is to unview and view again the main display. This creates an annoying flicker. I appreciate that I may need to do this when the main display is buried or minimised, but I can't find an unflickering way to do it in other cases. There's some sample code below which also demonstrates a little mystery under (at least) Windows/98...try this: --Click "Control button" --Minimize the Main Display --Click "Control button" again And--et voila!--the Main Display cannot be unminimized! (The answer is extra code is handle the strange offset that Main Display acquires during this procedure). ====== unview/all ControlPanel: layout [ Button "Control button" [unview MainDisplay View/new MainDisplay focus UserEntry ] ] MainDisplay: layout [UserEntry: Field 500x200] view/new/Title ControlPanel "Control" view/new/offset/Title MainDisplay ControlPanel/offset + ControlPanel/size Main Display do-events ====== Anyway, any help would be appreciated, --Colin

 [2/3] from: carl:rebol at: 30-Sep-2001 10:59


One way is to tell the main-display face to become the active window: activate-face: func [face] [ face/changes: 'activate show face ] activate-face main-display This will make the window active, and will throw focus to it. However, on some operating system versions (like Win98), this may simply blink the task's icon in the task bar. At 9/30/01 06:06 AM -0400, you wrote:

 [3/3] from: sanghabum::aol::com at: 30-Sep-2001 17:19


[carl--rebol--com] writes:
> One way is to tell the main-display face to become the active > window:
<<quoted lines omitted: 6>>
> However, on some operating system versions (like Win98), this > may simply blink the task's icon in the task bar.
Thanks. That works fine for me on Windows 98. The key thing is that your method does not force a redraw each time, hence no flicker. There's still the odd interaction with the minimize function, so I need some extra code to save and restore the latest actual screen position. (View 1.2.1 must be cheating a little to implement Win98 minimize. It gives the panel an offset of 3000x3000. If that's hardwired, expect some complaints one day from HiRes multi-monitor users <g>). --Colin.

Notes
  • Quoted lines have been omitted from some messages.
    View the message alone to see the lines that have been omitted