MacArthur, Ian (SELEX GALILEO, UK) schrieb:
> What I see is that the first menu is in it's "normal" position, but all
> the children open cascading to the left (rather than to the right) so
> that all are visible, in the specific case that edge-collision on the
> right occurs.

First research is done:

Inside of Fl_Menu.cxx there is a class menuwindow and it is possible to 
patch menuwindow::menuwindow().

First I focused at "int right_edge", but this is a fake, because 
"righ_edge" is never used and I deleted all right_edge. Some lines 
deeper there is a term

if (X > scr_x+scr_w-W) X= scr_x+scr_w-W;

This one is doing the movement when reaching screen border. A first 
litte change to

if (X + W > scr_x + scr_w) X= X -itemheight - W;

   is a little effort, because submenus touching right screen border now 
are moving to the left, leaving a square area for choose of covered 
submenu. The little change in if-condition doesn't change something, but 
for me is better to understand. This is better, but doesn't look best to 
me.
For moving the whole submenus it seems to be necessary to patch 
Fl_Menu_Item::pulldown()/popup(), where there seems to be a place 
recalculating position of all submenus. But I think it is better to 
understand tomorrow morning. ;o)
To be continued...
_______________________________________________
fltk mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to