Sorry, I would against this feature. Because I have built several flows based on widget action - execute flows. And maybe others too. Adding this might break the flow.
Thinking about it, trigger widget action might be useful and can be added without conflicting all current concept. But somehow, the trigger need to be linked properly to each action in the widget, which I think might got lost if you edit the widget. Example if you add new action block at the widget, then your trigger will now point to different block. You have to synchronize the widget and the trigger and it will be very confusing once you have several pairs. So I still stay on the same ground, leave current implementation as it, leave the widget action on the widget, not to the trigger.
Solution
Now, to your need. You can distinguish the source of the click by looking at the {widget_cell_x} and {widget_cell_y}. If your widget has 3 action horizontally, then y is always 0, but the x will now give 0, 1, 2, depends on which one you click. You can get maximum 8x8 from each (0-7), giving maximum 64 mapping point. If you need to map multiple row and column, you can always do it in a map. i usually just create a nested map with the concat of y and x. Example, for my yeelight 3x3 widget to be shown on the watch.
It has 3 x 3 actions block and all of them point to execute flow, yeelight control. At the flow, I create a map like this.
Code: Select all
db = newMapFromValues(
"CLICK", newMapFromValues(
"00", "RGB : Red 100%",
"01", "RGB : Green 100%",
"02", "RGB : Blue 100%",
"10", "RGB : Yellow 100%",
"11", "Turn Off",
"12", "RGB : White 100%",
"20", "CF : RGBY",
"21", "CF : Police Siren",
"22", "CF : White Red"),
"LONG_CLICK", newMapFromValues(
"00", 1,
"01", 20,
"02", 50,
"10", 80,
"11", 100,
"12", "",
"20", "",
"21", "",
"22", "Hide Widget") );
point = concat(widget_cell_y, widget_cell_x);
value = db[gesture][point];
First I concat the y and x. Then create a map with the {getsure} (CLICK, LONG_CLICK and other swipes). y = 0 and x = 0 means the top left. y = 0 and x = 1 means top center and so on. Then to get the value, pass the gesture and the point to the map, as seen in the last line to get {value}. This way, I can reuse the same flow to map every possible actions from a single widget. All the action always the same, execute flow.
I still have to change the map structure if I add new action block, by adding more key-value to the map.
Anyway, I am still open to the other method. Maybe the trigger can be directly linked to the widget, so any changes in the widget will automatically reflected on the trigger. If it is so, then adding the trigger should be a better solution.