Lumiera  0.pre.03
»edit your freedom«
focus-tracker.hpp File Reference

Go to the source code of this file.

Description

Helper to track focus/activation changes to move the activity "Spot" automatically.

The Lumiera UI introduces a set of structures and abstractions right above the usual and well-known "mechanics" of a graphical user interface. We do this to allow for a more coherent organisation of user interactions, based on the metaphor of working within a work space environment. Yet all of these amendments are intentionally subtle and non-obstructive; thus we need a way to link them to the well-established mechanics users come to expect of any graphical user interface:

  • you may click on something to mark it
  • you may right-click on something to get a context menu
  • you may push some button you see
  • you may issue a menu or global key-bound command to work on an implicit "subject"
  • some widget always has the "keyboard focus", and you may shift this focus. Any of these interactions as such are desirable, since they serve an obvious expectation of the user, but they somehow counterfeit the goal of establishing a coherent spatial ordering of work sites, since these interactions are "point-and-shot", not "go somewhere and do something". To mitigate this inner contradiction, we need to introduce a binding rule to gently move the global spot of activity alongside, whenever the user just "jumps at something" in sight. Doing so obviously also incurs the necessity to distinguish between coherent local moves (within one WorkSite) from cross-cutting jump moves. For the implementation this means we have to query the current WorkSite to decide if a given move is still within its realm.
Todo:
WIP 2/2017 early draft / foundations of "interaction control"
See also
interaction-director.hpp
ui-bus.hpp

Definition in file focus-tracker.hpp.

#include "stage/gtk-base.hpp"
#include "lib/nocopy.hpp"

Classes

class  FocusTracker
 Helper to pick up typical focus/activity changes, for the purpose of keeping a coherent system of WorkSite locations and a global "Spot" of activity in sync with spontaneous jumps to some arbitrary widget within the UI. More...
 

Namespaces

 stage
 Lumiera GTK UI implementation root.
 
 stage::interact
 UI interaction control.