Mercurial > projects > mde
diff codeDoc/ideas.txt @ 173:a1ba9157510e
Enabled ServiceContentList to call its callbacks when its value changes. Tried to fix some other bugs, but this is not a very clean commit, due to wanting to make some big changes to enable better use of invariants next.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Sat, 08 Aug 2009 15:53:10 +0200 |
parents | 0dd49f333189 |
children | 3d58adc17d20 |
line wrap: on
line diff
--- a/codeDoc/ideas.txt Wed Jul 29 20:28:22 2009 +0200 +++ b/codeDoc/ideas.txt Sat Aug 08 15:53:10 2009 +0200 @@ -12,17 +12,26 @@ > generalise concept of 2D widgets: > some other way of specifying a widget's dimensions > divide layout widget into a sub-widget handler and a placement component, such that placement can use a rectangle, hexagon or whatever component + > Menu widgets: + > Need BoolContentWidget with name in menu + > Special widget? -> scripted widgets -> decent rendering/theme system -> events: - -> Click events: widgets only receive clickEvent for left-button press, other button events handled alternatively from WidgetManager? + ?> Click events: WidgetManager separates out actions: + > left-click down: + > starts drag monitor, visually depresses buttons + > calls downClick, which can return codes to enable dragging, etc. + > if mouse moved more than dragStartDistance from click-position and dragging-from-widget available, start drag mode: + > visual feedback for dragging + > releasing does drag action; releasing on start widget cancels action + > otherwise, releasing does normal button effect (pass a eventClick) + *> consequence: button click/release & dragging more managed by WM; possibly less flexible for widgets + > dropContent(mouseClipboard): middle click paste action + > ...: open context menu + > eventScroll: scrolling event + -> Issue: release-click for menu buttons needs to be passed separately -> Click/drag handling: - -> on click: - -> clicked widget recieves depress event - -> create drag monitor, which records parent and optionally runs parent method on move (which can find the widget/drop-zone underneath) - -> on release: - -> method from either dragged or drop-zone widget called with reference to the other: - -> perhaps function in dragged widget called, which is passed reference of widget underneath, and can call getDropZoneAncestor on this -> drag/drop-like possibilities: -> magnifier which is dragged from icon, creates a magnified window, and disappears on release -> colour-picker which is dragged from a widget and dropped to choose the colour under it