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.
Radical is a model-view framework. There is a common API to
set data, then view modules to display it. Those modules have
been rewritten on top of new APIs.
Not all features are yet re-integrated, most are. Future commits
will address the various regressions and missing features. This
time, the code should be maintainable. The whole separation of
concerns analysis has been re-done. Allowing code de-duplication
and generalization.
The API remain the same, only `set_menu` has changed a little to
allow merging the 2 sub-menu code paths.
This commit begin to merge the Radical "view" rewrite.
Those module API replace previously hardcoded positioning
logic. Some code may eventually be upstreamed once mature
enough.
These commits dont make the code any smaller or more readable by
themselves. However, they are one step along many to refactor the
code to become more readable and simpler.
Eventual addition will extend the declarative syntax and merge it
with Radical own syntax (this will break the API a little due to
naming conflitcs).
I will also split the theme details from the declarative syntax and
use a separate "chain of responsability" meta-object to handle it.
Lots of things will break, hopefully for the better (eventually)
This commit use new upstream APIs:
* Many cairo paths have been replaced with gears.shape and gears.matrix
This commit add some features:
* Improved border_color support, now available per state
* bg_image support, now available per state
* Mutualize the state setting, remove duplicated code
Regressions:
* The arrow menu background border is off by a pixel
* The layout position problem reported by @mindeunix is now worst.
The positioning algo is full of race conditions and cannot be fixed
without a full rewrite. This commit break more things than it solve
and the code is in the middle of a transition. This will be solved
by future commits addressing the code quality (after the refactoring).