Patch title: Release 95 bulk changes
Abstract:
File: /pliant/graphic/layout/form.pli
Key:
    Removed line
    Added line
   
module "/pliant/language/compiler.pli"
module "/pliant/util/pml/io.pli"
module "prototype.pli"
module "/pliant/graphic/draw/prototype.pli"
module "/pliant/graphic/console/prototype.pli"
module "helper/draw.pli"
module "helper/event.pli"
module "sequence.pli"
module "/pliant/util/encoding/utf8.pli"
module "/pliant/graphic/browser/client/context.pli"
module "/pliant/graphic/browser/client/window.pli"



method p next_input target found -> next
  oarg_rw LayoutPrototype p ; arg_rw LayoutPrototype target 
  var Link:LayoutPrototype p2 :> p first
  while exists:p2
module "/pliant/language/compiler.pli"
module "/pliant/util/pml/io.pli"
module "prototype.pli"
module "/pliant/graphic/draw/prototype.pli"
module "/pliant/graphic/console/prototype.pli"
module "helper/draw.pli"
module "helper/event.pli"
module "sequence.pli"
module "/pliant/util/encoding/utf8.pli"
module "/pliant/graphic/browser/client/context.pli"
module "/pliant/graphic/browser/client/window.pli"



method p next_input target found -> next
  oarg_rw LayoutPrototype p ; arg_rw LayoutPrototype target 
  var Link:LayoutPrototype p2 :> p first
  while exists:p2
    if ((entry_type addressof:p2)=LayoutInput or (entry_type
    if p2:focusable and found
      next :> p2
      return
    if addressof:p2=addressof:target
      found := true
    next :> p2 next_input target found
    if exists:next
      return
    p2 :> p2 next
  next :> null map LayoutPrototype


      next :> p2
      return
    if addressof:p2=addressof:target
      found := true
    next :> p2 next_input target found
    if exists:next
      return
    p2 :> p2 next
  next :> null map LayoutPrototype


method i focusable -> c
  oarg_rw LayoutInput i ; arg CBool c
  c := true



method s bbox c -> b
  arg_rw LayoutSelect s ; arg_rw LayoutPC c ; arg LayoutArea
  var Pointer:LayoutStyleInput st :> c:style input
  implicit st
    var Str label := ""
    each o s:options
      if o:value=s:value
        label := o label
    value_font bbox label null (var Float bx0) (var Float by
    s:bbox x0 := bx0*value_scale-padding_x
    s:bbox y0 := by0*value_scale-padding_y
    s:bbox x1 := bx1*value_scale+padding_x
    s:bbox y1 := by1*value_scale+padding_y
  b := s bbox


method s event c
  oarg_rw LayoutSelect s ; arg_rw LayoutEC c
  if c:mode=layout_event_pointer and c:x>=s:bbox:x0+s:tx and
    if c:event="press" and c:key="button1"
      var Link:LayoutSelectOptions o :> new LayoutSelectOpti
      o set_parent (null map LayoutPrototype)
      o select :> s
      c:window overlay :> o
      c:window orefresh := true
      c set_focus o 0
      c:window redraw_hurry
    eif c:event="move" and (s:flags .and. 1)<>0
      c set_over s
      c cancel := true
method s bbox c -> b
  arg_rw LayoutSelect s ; arg_rw LayoutPC c ; arg LayoutArea
  var Pointer:LayoutStyleInput st :> c:style input
  implicit st
    var Str label := ""
    each o s:options
      if o:value=s:value
        label := o label
    value_font bbox label null (var Float bx0) (var Float by
    s:bbox x0 := bx0*value_scale-padding_x
    s:bbox y0 := by0*value_scale-padding_y
    s:bbox x1 := bx1*value_scale+padding_x
    s:bbox y1 := by1*value_scale+padding_y
  b := s bbox


method s event c
  oarg_rw LayoutSelect s ; arg_rw LayoutEC c
  if c:mode=layout_event_pointer and c:x>=s:bbox:x0+s:tx and
    if c:event="press" and c:key="button1"
      var Link:LayoutSelectOptions o :> new LayoutSelectOpti
      o set_parent (null map LayoutPrototype)
      o select :> s
      c:window overlay :> o
      c:window orefresh := true
      c set_focus o 0
      c:window redraw_hurry
    eif c:event="move" and (s:flags .and. 1)<>0
      c set_over s
      c cancel := true
  if c:mode=layout_event_focus and (addressof c:window:session:focus_target)=addressof:s
    if c:event="press" and c:key="tab"
      var Link:LayoutPrototype next :> c:window:root next_input s { var CBool found := false ; found }
      if exists:next
        c set_focus next 0
  if c:event="focus"
    c:window redraw_area s:bbox:x0+s:tx s:bbox:y0+s:ty s:bbo
  if c:event="over"
    c:window:session:connection otag "over" s:id c:key="on"
    c:window:session:connection flush anytime

  if c:event="focus"
    c:window redraw_area s:bbox:x0+s:tx s:bbox:y0+s:ty s:bbo
  if c:event="over"
    c:window:session:connection otag "over" s:id c:key="on"
    c:window:session:connection flush anytime

method s focusable -> c
  oarg_rw LayoutSelect s ; arg CBool c
  c := true



method so event c
  oarg_rw LayoutSelectOptions so ; arg_rw LayoutEC c
  var Link:LayoutSelect s :> so select
  var Pointer:LayoutStyleInput st :> c:style input
  implicit st
    if c:mode=layout_event_pointer and c:x>=so:bbox:x0 and c
      if c:event="release" and c:key="button1"
        var Int index := cast (c:y-so:bbox:y0)/(st:value_fon
        var Int i := 0
        each o s:options
          if i=index
            s value := o value
          i += 1
        c set_focus s 0
        c:window redraw_hurry
    if c:event="focus"
      var Pointer:BrowserSession session :> c:window session
      if c:key="on"
        session focus_value := s value
      if (c:key="off" or c:key="sync") and s:value<>session:
        session:connection otag "set" s:id s:value
        session:connection flush anytime
        session focus_value := s value
      if c:key="off"
        if (addressof c:window:overlay)=addressof:so
          session discard so
          c:window overlay :> null map LayoutPrototype
          c:window redraw_area so:bbox:x0 so:bbox:y0 so:bbox

method so event c
  oarg_rw LayoutSelectOptions so ; arg_rw LayoutEC c
  var Link:LayoutSelect s :> so select
  var Pointer:LayoutStyleInput st :> c:style input
  implicit st
    if c:mode=layout_event_pointer and c:x>=so:bbox:x0 and c
      if c:event="release" and c:key="button1"
        var Int index := cast (c:y-so:bbox:y0)/(st:value_fon
        var Int i := 0
        each o s:options
          if i=index
            s value := o value
          i += 1
        c set_focus s 0
        c:window redraw_hurry
    if c:event="focus"
      var Pointer:BrowserSession session :> c:window session
      if c:key="on"
        session focus_value := s value
      if (c:key="off" or c:key="sync") and s:value<>session:
        session:connection otag "set" s:id s:value
        session:connection flush anytime
        session focus_value := s value
      if c:key="off"
        if (addressof c:window:overlay)=addressof:so
          session discard so
          c:window overlay :> null map LayoutPrototype
          c:window redraw_area so:bbox:x0 so:bbox:y0 so:bbox

method so focusable -> c
  oarg_rw LayoutSelectOptions so ; arg CBool c
  c := true



#-----------------------------------------------------------



method l event c
  arg_rw LayoutLink l ; arg_rw LayoutEC c
  if c:mode=layout_event_pointer and c:x>=l:bbox:x0+l:tx and
    if c:event="press" and c:key="button1"
      c focus_sync
      c:window:session:connection otag "run" l:id
      c:window:session:connection flush anytime
#-----------------------------------------------------------



method l event c
  arg_rw LayoutLink l ; arg_rw LayoutEC c
  if c:mode=layout_event_pointer and c:x>=l:bbox:x0+l:tx and
    if c:event="press" and c:key="button1"
      c focus_sync
      c:window:session:connection otag "run" l:id
      c:window:session:connection flush anytime