Look the following example:
You can move the main window and the sub window will follow the main one, remaining at the relative positions.
Here is the source:
REBOL [
Title: "Linked Layout Demo"
File: %linked-layouts.r
Author: "Gregg Irwin"
EMail: greggirwin@acm.org
Version: 0.0.1
Date: 11-Oct-2003
Purpose: {
Shows how to "link" layouts so when a main window moves, the
others stay in the same relative position to it.
}
]
; We need to set title to "" or REBOL will put it on the seconary
; windows--those with no title bar--as text. We need a title in
; the header for the library though.
system/script/title: ""
moved: true
evt-func: func [face event][
if event/face = main-lay [
;if event/type <> 'time [print event/type]
switch event/type [
close [shutdown]
offset [moved: true]
resize [moved: true]
time [
if moved [
; The -4x4 offset accounts for REBOL *not* accounting for
; border widths.
lay-2/offset: -4x4 + main-lay/offset + to pair! reduce [0 main-lay/size/y]
lay-3/offset: -4x4 + main-lay/offset + to pair! reduce [main-lay/size/x - lay-3/size/x main-lay/size/y ]
lay-2/changes: lay-3/changes: 'offset
show [lay-2 lay-3]
moved: false
]
]
]
]
event
]
if not find system/view/screen-face/feel/event-funcs :evt-func [insert-event-func :evt-func ]
shutdown: does [unview/all]
main-lay: layout [
size 400x100
h1 "main window"
timer: sensor rate 0:0:1
]
lay-2: layout [size 150x200 h2 "Sub-window 1"]
lay-3: layout [size 200x150 h2 "Sub-winow 2"]
view/new/options/offset main-lay [no-border resize] 100x100
view/new/options/offset lay-2 [no-title no-border resize] 100x200
view/new/options/offset lay-3 [no-title no-border resize] 300x200
do-events
quit
No comments:
Post a Comment