diff --git a/src/include/session-command-facade.h b/src/include/session-command-facade.h index 448fd6023..1f07a2188 100644 --- a/src/include/session-command-facade.h +++ b/src/include/session-command-facade.h @@ -87,6 +87,9 @@ namespace control { * use the embedded #facade factory, which yields a proxy to route any * calls through the lumieraorg_SessionCommand interface * @throws lumiera::error::State when interface is not opened + * @todo as of 2/2021 only the #trigger operation is used; if no case for + * an elaborated command cycle with binding step and deferred invocation + * shows up, we may consider dropping the other operations * @see [Command system](\ref command.hpp) * @see SessionCommandFunction_test */ diff --git a/src/steam/control/session-command-service.cpp b/src/steam/control/session-command-service.cpp index 4d09f9d06..c09853aa9 100644 --- a/src/steam/control/session-command-service.cpp +++ b/src/steam/control/session-command-service.cpp @@ -71,6 +71,8 @@ namespace control { * Command definition, in case the given ID is not known * as a local command instance. This allows to use the * SessionCommand service without explicit instantiation + * @warning this simplified command invocation scheme is intended for + * single-threaded use from the UI. It is *not threadsafe*. */ void SessionCommandService::trigger (Symbol cmdID, Rec const& argSeq) diff --git a/wiki/thinkPad.ichthyo.mm b/wiki/thinkPad.ichthyo.mm index 2042c4adf..7d163f834 100644 --- a/wiki/thinkPad.ichthyo.mm +++ b/wiki/thinkPad.ichthyo.mm @@ -31627,6 +31627,330 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ nachdem sich eine Instanz einer Rolle gemeldet hat, kann der Hook sie individuell verknüpfen, typischerweise als Lambda +

+ +
+
+
+
+ + + + + + + + + +

+ also nicht generisch, sondern die spezifische Closure für z.B. den Fall drag-Clip +

+ +
+
+ + + + + + + + +

+ naja... sie besteht schon von Anfang an, insofern das Event-Konzept, wie auch die konkrete Quelle, ohnehin an das UI-Framework gebunden sind +

+ +
+
+
+ + + + + + +

+ im Beispiel: in dieser Closure wird zunächste eine Verdrahtung auf das button_down-Event angelegt. Wenn diese aktiviert wird, schaltet die die Beobachtung eines ebenfalls vorsorglich verdrahteten motion_notify_event ein, sowie analog das Warten auf ein button_up +

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ die Umrechnung Zeit → Pixel habe ich im CanvasHook versteckt +

+ +
+ + + + + + +

+ das bedeutet:
+

+
    +
  • + wenn im Event explizite Koordinaten vorkommen, dann müssen diese sofort umgerechnet werden in eine Zeit +
  • +
  • + aus der gegenwärtig im Clip gespeicherten Zeit ergibt sich dann ein Delta +
  • +
+ +
+ + + + + + + + + + + +

+ ...das heißt, durch die Drag-Geste entstehen vorübergehend lokal inkonsistente Koordinaten; der nächste DisplayEvaluation-Pass würde dies wieder beseitigen. Dieser Ansatz wäre rein logisch der konsktentere Weg, denn erst durch eine Rückmeldung von der Session wird eine neue Position auch offiziell. Allerdings müßte man bei diesem Ansatz vorsichtig vorgehen, und mögliche Interferenzen mit der DisplayEvaluation und dem Layout-Managment bedenken; besonders wenn man eine weite Strecke zurücklegt, könnte es passieren, daß der Clip dann plötzlich aus der Anzeige verschwindet und den Fokus verliert, weil eine DisplayEvaluation ihn wieder an seine gegenwärtig nominelle Position geschoben hat. +

+ +
+ + + + + + + + + + + +

+ ...wobei das auch noch halbfertig ist; später einmal muß es hier eine Abstimmung mit dem Layout-Manager geben, aber diese Abstimmung sollte eigentlich nicht über den ClipPresenter laufen +

+ +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ insofern wir die Storage nur einmal, im jeweilgen CmdContext der Geste vorsehen müssen +

+ + +
+
+ + + + + + +
+
+
+
+
@@ -36019,7 +36343,7 @@
- + @@ -36082,7 +36406,7 @@ - + @@ -36284,7 +36608,8 @@

- + +
@@ -36375,6 +36700,46 @@
+ + + + + + + + + + + + +

+ nur eine Art remote procedure call +

+ +
+
+
+ + + + + + +

+ ...und das heißt auch, wo werden die Aussage-Sätze gebildet?
wird das Formen von kontextbezogenen Anweisungen im UI-Bus-Protokoll eigens verankert, oder erfolgt dies komplett intern im Stage-Layer? +

+ +
+ + + + + + + + +
+
@@ -37312,6 +37677,9 @@ + + + @@ -38040,9 +38408,9 @@ - + - + @@ -53791,6 +54159,25 @@ + + + + + + + + + + + + + + + + + + + @@ -54299,7 +54686,7 @@ - +