Patch title: Release 94 bulk changes
Abstract:
File: /pliant/graphic/layout/helper/event.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/graphic/layout/prototype.pli"
module "/pliant/graphic/browser/client/context.pli"
module "/pliant/graphic/browser/client/connect.pli"
module "/pliant/graphic/browser/client/window.pli"
module "/pliant/graphic/console/prototype.pli"
module "/pliant/graphic/layout/sequence.pli"
module "/pliant/graphic/layout/hook.pli"


method s set_focus_index index
  arg_rw BrowserSession s ; arg Int index
  s focus_index := index
  s focus_scroll_stage := 0
  s focus_scroll
  
method ec set_focus target index
  arg_rw LayoutEC ec ; oarg_rw LayoutPrototype target ; arg Int index
  var Pointer:BrowserSession s :> ec:window session
  var Link:LayoutPrototype t :> s focus_target
  s focus_target :> null map LayoutPrototype
  if exists:t
    var LayoutEC ec2
    ec2 style :> s:console default_style
    ec2 event := "focus"
    ec2 key := "off"
    ec2 window :> s focus_window
    t event ec2
    if false
      var Link:LayoutPrototype p :> t parent
      while exists:p
        p event ec2
        p :> p parent
  s focus_window :> ec window
  s focus_target :> target
  s focus_index := index
  s focus_value := ""
  s focus_scroll_stage := 0
  if exists:target
    var LayoutEC ec2
    ec2 style :> s:console default_style
    ec2 event := "focus"
    ec2 key := "on"
    ec2 window :> ec window
    s:focus_target event ec2
    if false
      var Link:LayoutPrototype p :> target parent
      while exists:p
        p event ec2
        p :> p parent

method ec focus_sync
  arg_rw LayoutEC ec
  var Pointer:BrowserSession s :> ec:window session
  if (exists s:focus_target)
    var LayoutEC ec2
    ec2 style :> s:console default_style
    ec2 event := "focus"
    ec2 key := "sync"
    ec2 window :> s focus_window  
   s:focus_target event ec2

method s focus_exclude l
  arg_rw BrowserSession s ; arg LayoutPrototype l
  var Pointer:LayoutPrototype p :> s focus_target
  while exists:p
    if addressof:p=addressof:l
      (var LayoutEC ec) window :> s focus_window
      ec set_focus (null omap LayoutPrototype) undefined
      return
    p :> p parent


method ec set_over target
  arg_rw LayoutEC ec ; oarg_rw LayoutPrototype target
  var Pointer:BrowserSession s :> ec:window session
  if addressof:target<>(addressof s:over_target)
    if (exists s:over_target)
      var LayoutEC ec2
      ec2 style :> s:console default_style
      ec2 event := "over"
      ec2 key := "off"
      ec2 window :> ec window
      s:over_target event ec2
    s over_window :> ec window
    s over_target :> target
    if exists:target
      var LayoutEC ec2
      ec2 style :> s:console default_style
      ec2 event := "over"
      ec2 key := "on"
      ec2 window :> ec window
      target event ec2

method s over_exclude l
  arg_rw BrowserSession s ; arg LayoutPrototype l
  var Pointer:LayoutPrototype p :> s over_target
  while exists:p
    if addressof:p=addressof:l
      (var LayoutEC ec) window :> s over_window
      ec set_over (null omap LayoutPrototype)
      return
    p :> p parent


if false # method s set_clipboard text categories password
  arg_rw BrowserSession s ; arg Str text categories password
  var Pointer:BrowserConsole c :> s console
  c clipboard_text := text
  c clipboard_session := undefined
  c clipboard_server := ""
  c clipboard_categories := ""
  c clipboard_password := ""
  c clipboard_target :> null map LayoutPrototype
  c clipboard_index := undefined
  for (var Int i) 1 12
    if addressof:s=(addressof c:session:i)
      c clipboard_session := i
      url_split c:session:i:url (var Str proto) c:clipboard_server (var Str path)
      c clipboard_categories := categories
      c clipboard_password := password
  c:console clipboard_write text


method c clipboard_set_text text
  arg_rw BrowserConsole c ; arg Str text
  c clipboard_text := text
  function clipboard_content c -> text
    arg BrowserConsole c ; arg Str text
    text := c clipboard_text
  c:console clipboard_export (the_function clipboard_content BrowserConsole -> Str) addressof:c

method c clipboard_get_text -> text
  arg_rw BrowserConsole c ; arg Str text
  if (c:console clipboard_import text)=failure
    text := c clipboard_text


method ec reposition start
  arg_rw LayoutEC ec ; oarg_rw LayoutPrototype start
  var Pointer:LayoutPrototype p :> start
  part scan
    p reset_position
    var Pointer:LayoutPrototype q :> p parent
    if exists:q
      p :> q
      restart scan
  var Pointer:BrowserWindow w :> ec window
  if (addressof w:root)=addressof:p
    w refresh := true
  if (addressof w:overlay)=addressof:p
    w orefresh := true


method s discard_rec l
  arg_rw BrowserSession s ; oarg_rw LayoutPrototype l
  l parent_and_flags := 2
  if (entry_type addressof:l)=LayoutSection
    s:namespace remove (addressof:l map LayoutSection):section addressof:l
  var Link:LayoutPrototype p :> l first
  while exists:p
    s discard_rec p
    var Link:LayoutPrototype n :> p next
    p next :> null map LayoutPrototype
    p :> n

method s discard target
  arg_rw BrowserSession s ; oarg_rw LayoutPrototype target
  s focus_exclude target
  s over_exclude target
  s discard_rec target


export '. set_focus' '. set_focus_index' '. focus_sync'
export '. set_over'
export '. clipboard_set_text' '. clipboard_get_text'
export '. reposition'
export '. discard'