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