No more hacks, all it caused was hidding issues deeper and having
asserts() after a few weeks of runtime.
Awesome tag.index is still buggy, but I will fix it and write the
proper tests so it stay fixed. No more hacks.
Sometime I wonder WTF I was on when I wrote some parts or Radical...
I guess I can call it university stress...
Note that this will probably cause a bunch of regressions because
some other code expected the garbage I was creating.
This is a band-aid on top of deeper issues when layout_changed is
wrongly called. This should prevent menus moving in random places
when the mouse is moved. Note that this commit wont stop them from
moving when their size really change.
This is harder to fix as all the "outside of the workarea" checks
still need to be performed and in many cases, such as async loaded
menus, the move itself is really necessary while in others it is
unwanted.
In a quest to get rid of all fit/draw monkeypatching, this
commit add a proper grid layout. It is currently as good
as the old layout/grid.lua hack, but not "correct" used outside
of Radical menus (swap/insert/remove are also broken) and it
fail to handle many corner case.
As this was the last step in the base constructor, it could be
done in each menu type without the callback and extra code.
The only reason this existed was to allow menu "sub classes"
that override this function. However, since this was rewritten,
it was no longer used, so for the sake of simplicity, I remove
this feature.
This is a step forward to stabilize Radical again. Most of impl/ and widgets/
code is still a mess, but the other modules slowly start to be maintainable
again. The road is still long before the Radical code is good enough to go
into Awesome. It will get there, eventually.
The menu can be attached to a widget or the mouse again, and more
This commit also fix some tasklist/taglist issues and introduce minor
features like item.shape.
There is a new widget called `infoshapes`. It support all the features
from the underlay system, but is a lot less intrusive. This allow to
make some code simpler.
This is another step in getting rid of all the hacks.