Morphic GUI中的事件传播

han*_*tes 9 smalltalk squeak event-handling morphic

我有一个Squeak Morphic GUI的图像,它包含一些透明部分,因此不应该接受任何鼠标事件等但只是可见,但它需要在其他变形前面可见.

这就是为什么我认为将出现的鼠标事件传播到底层变形是有用的.有没有人知道我的问题的解决方案或解决它的其他建议.

    V                         <- mouseDownEvent
_____________________________ <- transparent image (BorderedMorph)
  _____    _____     _____
_|     |___|    |___|     |__ <- buttons waiting for click and drop events

_____________________________ <- basic morph
Run Code Online (Sandbox Code Playgroud)

我希望这能说明我的问题.

zeb*_*h49 2

我能想到的最好的事情是沿着以下思路(按照平滑度的递增顺序,以及工作可能性的递减顺序)

  1. 记录事件,将透明图像移开,然后重播该事件。这似乎是一种低效且糟糕的做法。
  2. 以某种方式跟踪透明图像背后的焦点,并将事件传递给它。我对相关库不熟悉,所以我不知道是否可以这样做。如果您可以控制其他层,那么这很可能是正确的选择。(您可以使用 mouseDownEvent 直接调用它们的“发生鼠标事件”函数,尽管您仍然需要确定哪个函数会接收它)。
  3. 只需将其声明为无论任何可用级别都不会将鼠标事件传递给它的东西。OSD 窗口往往会这样做,我不知道如何。如果你能这样做,我会建议你这样做......但考虑到你问这个问题,你可能不能。