マウスオーバー時のイベントについて

【ご質問】
ドラッグ&ドロップで、2つのオブジェクト同士を統合させる処理を考えています。
この際、ドラッグ側とドロップ先のオブジェクトの内容を比較して、
(ドロップしてからの判断ではなく)「マウスオーバー中に」ドロップ可否を判断したいです。

【回答】
DragOverクラスのdssフィールドに保存されている
DataTransferSourceSetオブジェクトから
ドラッグ中のオブジェクトを取り出すことができます。

詳細は以下のサンプルをご参照ください。
(ドラッグ中のオブジェクトの属性によって
ドロップが可能かどうかを判断しています。)

{curl 6.0,7.0,8.0 applet}
{curl-file-attributes character-encoding = “shift-jis”}

{let vbox:VBox = {VBox halign = “center”, spacing = 1cm,
                     {HBox spacing = 2cm,
                         {EllipseGraphic
                             width = 10mm, height = 15mm, dragee = {ImageDragee}},
                         {EllipseGraphic
                             width = 20mm, height = 5mm, dragee = {ImageDragee}},
                         {EllipseGraphic
                             width = 20mm, height = 10mm, dragee = {ImageDragee}},
                         {EllipseGraphic
                             width = 15mm, height = 20mm, dragee = {ImageDragee}
                         }
                     },
                     {TextFlowBox   
                         border-width = 2pt,
                         border-color = “black”,
                         margin = 5pt, 
                         height = 5cm,
                         width = 5cm,
                         opaque-to-events? = true,
                         {text font-size = 16pt, 縦に長い図形だけドロップできます},
                        
                         {on e:DragOver do
                             || DataTransferSourceSetを取得
                             {if-non-null dss = e.dss  then
                                 {for i = 0 to dss.for-loop-count – 1 do
                                     || DataTransferSourceを取得
                                     {type-switch {{dss.get i}.get-data}
                                      case obj:EllipseGraphic do
                                         || ドラッグ中のEllipseGraphicオブジェクトにアクセス
                                         {if obj.height > obj.width then
                                             {e.will-accept-drop?
                                                 {proc
                                                     {type:Type,
                                                      x:Distance,
                                                      y:Distance,
                                                      effect:#DragEffect
                                                     }:DragEffect
                                                     {return drag-effect-copy}
                         }}}}}}},
                         {on e:Drop do
                             {e.accept-drop
                                 {proc
                                     {a:any,
                                      x:Distance,
                                      y:Distance,
                                      effect:#DragEffect}:DropResult
                                     {return
                                         {DropResultCopy
                                             action =
                                                 {proc {}:void
                                                     {if a isa EllipseGraphic then
                                                         {if a.height > a.width then
                                                             {popup-message
                                                                 modal? = true,
                                                                 “縦に長いのでdrop可”}
                         }}}}}}}}}
            }
}

{View
    {Frame vbox, width = 8cm, height = 8cm},
    visibility = “normal”,
    {on WindowClose do
        {exit}
    }
}

また、APIリファレンスの
[CURL.GUI.BASE]-[DataTransferSourceSet]
の項をご参照ください。