Version 3 (modified by sriggins, 14 years ago) (diff)


Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Error: Macro TicketQuery(summary=BASE_HALOS_R1, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|) failed
current transaction is aborted, commands ignored until end of transaction block



Halo menus are laid out with absolute coordinates defined by the halo menu. This means that there is no coordination going on between halo menus to prevent them from overlapping. This happens now when the user zooms the book out ot 10%, but it can happen later if plugins are allowed to provide their own halo menus.

Task requirements

  • Determine how to handle overlapping halo menus, or more importantly how to layout halo menus in ways other than absolute coordinates

Task result

(List the end product of the task (for example "Source code", "Wiki page", etc.))

Implementation idea

  • For a first pass, we can add a helper method to aid in determined what a true rectangle for halos should be. This would help with the issue of the frame (for example) getting smaller, but it won't help with plugins deciding they want to be placed where some other menu decided it should be. Potentially we'll need a halo menu layout system, that takes all of the halo menus, moves them so they don't overlap, and determines what the minimal bounding rectangle for them is. This may prove to be difficult given the existing absolute coordinate system, where halo menus place themselves on the page. Maybe we need halo menus to be able to also provide some hinting, for example topRight, or bottomCenter, and a HaloContainer can lay out the halo menus itself, sorted in order by the sort key within the position.

How to demo

Demo how the halo menus lay out properly when the page work area is zoomed to 10%


Due to time constraints, we decided to not implement a new halo menu layout system. Instead, I will add two static ints to AppHaloUtil that determine the smallest width and height of a rectangle that the halo menus should use

I'll then write a method to return the selection bounds constrained by this minimal rectangle, and utilize it in the halo menus that wrap frames.


  • Added a method to AppHaloUtil that gets the minimum selection bounds
  • Replace code with call to new method in rotate, move and main halo menus
  • see [2422]


(Place the testing results here.)


(Write comments for this or later revisions here.)