Commit Graph

74 Commits

Author SHA1 Message Date
Emmanuel Lepage Vallee 21f735600c dock: Fix a race condition
The size wasn't always right
2016-12-25 21:59:37 -05:00
Emmanuel Lepage Vallee b65ddbed0e cleanup: Remove duplicated logic 2016-12-25 21:59:37 -05:00
Emmanuel Lepage Vallee 0be013f1f7 filter: Rewrite the filter widget 2016-12-25 21:59:37 -05:00
Emmanuel Lepage Vallee 9ea34d4003 cleanup: Mutualize some code and fix embed menus 2016-12-25 21:59:37 -05:00
Emmanuel Lepage Vallee f48ede52f9 cleanup: Port scrolling to Awesome 3.6 visible widget API
It still doesn't work, but at least there is no logic duplication
with Awesome anymore.
2016-12-25 21:59:37 -05:00
Emmanuel Lepage Vallee a1abd2f57a cleanup: Remove overlay/underlay hacks, re-implement as widgets container
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.
2016-12-25 21:59:37 -05:00
Emmanuel Lepage Vallee f239ee9a24 Rewrite the view layer
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.
2016-12-25 21:59:37 -05:00
Emmanuel Lepage Vallee 760bc05da4 refactor: Port radical.layout.horizontal to the declarative syntax
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.
2016-12-25 21:59:23 -05:00
Emmanuel Lepage Vallee 01e961dd11 refactor: Port radical.item.layout.horizontal to the declarative syntax 2016-12-25 21:59:23 -05:00
Emmanuel Lepage Vallee a625388122 refactor: Port radical.layout.vertical to the declarative syntax 2016-12-25 21:59:23 -05:00
Emmanuel Lepage Vallee bf64eec5c9 Use the newly upstreamed container methods 2016-12-25 21:59:23 -05:00
Emmanuel Lepage Vallee 5271ffd35c Begin the big changes for 3.6
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).
2016-12-25 21:59:23 -05:00
Emmanuel Lepage Vallee 6e85a46093 Fix more issues for 3.6. The arrow_prefix now work using a new hack
The "hack" force the full redraw of the menu. This is what 3.5 did
anyway, but of course is not correct. The new layout system allow
widgets to have a larger fit and it should cascade by itself. This
is not yet used by radical.

This commit also fix some mistake made during the initial port.

My whole config now load mostly correctly. Some 3.5 era bugs even
fixed themselves! It is still slower for some reasons and have many
errors left, but it "look" ok.
2016-12-25 21:59:23 -05:00
Emmanuel Lepage Vallee 1229da75c7 Add a new global get_preferred_size() for all widgets
Replace the fit(9999,9999) used before. This will hopefully be
temporary until upstream adopt such a method
2016-12-25 21:59:23 -05:00
Emmanuel Lepage Vallee cf9bb87b36 Port to the new Awesome widget system
This commit fix most issues introduced by the new widget system. It
is not production ready and will require multiple commits to fix
individual issues.

The new widget system is better suited for modules like Radical than
the previous one. Over time, this breakage will probably end up being
a good thing. However, for now, expect multiple errors.

The changes:

 * The draw "wibox" argument is now a "context". "context.wibox" is
   the equivalent. This will allow passing the Radical structure to
   the draw method without storing it in the widgets.
 * "fit" now have a new required "context" argument for the DPI, this
   will allow removing the "default_height" variable Radical is using
   to scale the UI on HIDPI systems. This will allow size policies to
   be passed to the fit method
 * "draw" has been splitted into "draw", "draw_before_children",
   "draw_after_children" and "layout". This simplify the overlay
   system and will allow cleaner code
 * Drawing outside of the widget clip is no longer supported, this
   break multiple Radical item.style. This will allow better
   performance and less redraw once the new system issues have been
   fixed
2016-12-25 21:59:23 -05:00
Emmanuel Lepage Vallee da08a267cf Add rounded + shadow item style 2015-01-10 23:59:51 -05:00
Emmanuel Lepage Vallee 46481f0a8a Add better tooling to track menu dimensions 2014-10-05 18:01:54 -04:00
Emmanuel Lepage Vallee 52fdd8a1f2 Correctly forward menu item geometry 2014-07-27 23:49:14 -04:00
Emmanuel Lepage Vallee 1662a013dc Bug fixes 2014-07-27 19:20:04 -04:00
Emmanuel Lepage Vallee d9a82c87a4 Support multiple tags at once in the tasklist 2014-04-15 22:55:23 -04:00
Emmanuel Lepage Vallee 8da00cbd65 Add new notification item layout, improve extensions 2014-04-08 23:38:31 -04:00
Emmanuel Lepage Vallee ef7e46f865 Improve dynamic menu speed 2014-03-26 16:18:59 -04:00
Emmanuel Lepage Vallee 2e6e3fb4ca Better compute the minimum size 2014-03-24 00:00:01 -04:00
Emmanuel Lepage Vallee 14c420ac49 Fix keyboard handling 2014-03-23 00:14:25 -04:00
Emmanuel Lepage Vallee bee04c14bc Fix issue #11, break API, may cause regressions 2014-03-22 17:35:43 -04:00
Emmanuel Lepage Vallee 059572956e Change the way position is computed
The old way was a hack arounf an Awesome 3.5.0 limitation.
The newer should be more reliable.

Please report any regressions.
2014-03-22 00:11:08 -04:00
Emmanuel Lepage Vallee 231eef25bc Add global underlay support 2014-03-12 00:31:50 -04:00
Emmanuel Lepage Vallee ad20d9e2be Properly handle menu prefix and suffix widgets
This was previously hardcoded

100 commits!
2014-03-11 20:50:00 -04:00
Emmanuel Lepage Vallee 5255cca803 Change object syntax to user get_ and set_ prefix instead of get_map/set_map mappers (issue #15) 2014-03-05 00:12:48 -05:00
Emmanuel Lepage Vallee 95ed8b26c4 More style/colors oriented refactoring 2014-03-02 16:28:30 -05:00
Emmanuel Lepage Vallee fabd52d1a6 Major refactoring, address issue #12 2014-02-22 23:59:03 -05:00
Emmanuel Lepage Vallee 76623695e6 Fix an issue with :remove() and fix taglist signals 2014-02-11 21:38:05 -05:00
Emmanuel Lepage Vallee f7bdc9b75a Update tasklist text when client change 2014-02-09 03:04:02 -05:00
Emmanuel Lepage Vallee cbb39935db Add support for mouse over colors 2014-02-09 00:54:59 -05:00
Emmanuel Lepage Vallee 220dd27a02 Add new 'flexbar' menu type (bar with a flex layout) 2014-02-06 23:47:24 -05:00
Emmanuel Lepage Vallee c0c57eff16 Partially implement issue #8 2014-02-05 22:48:26 -05:00
Emmanuel Lepage Vallee 8fa38c2a2c Add :move() and :remove() methods 2014-02-05 21:43:06 -05:00
Emmanuel Lepage Vallee ddd67ca569 Add :swap(item1,item2) 2014-02-05 01:03:51 -05:00
Emmanuel Lepage Vallee d62524f0ea I waited long enough, time to push the fix for issue #3 (works for me (tm)) 2014-02-04 23:43:07 -05:00
Emmanuel Lepage Vallee bd8b76ce0e Complete transition to item_layout 2014-02-04 23:29:38 -05:00
Emmanuel Lepage Vallee daff0cb4dd Add support for custom item_style and item_layout for each items 2014-02-02 23:01:31 -05:00
Emmanuel Lepage Vallee b87282458f Port radical.layout.horizontal to the item_layout concept 2014-02-02 17:21:59 -05:00
Emmanuel Lepage Vallee 0376cfaf31 Add new 'item_layout' concept to fight code duplication between layouts 2014-02-02 16:53:09 -05:00
Emmanuel Lepage Vallee b1f3190ae3 Checkbox need to be before the sub menu arrow, not after 2014-01-30 00:03:56 -05:00
Emmanuel Lepage Vallee 5b635e96e5 Move upderlay widget to Radical 2014-01-16 00:25:50 -05:00
Emmanuel Lepage Vallee a1144564ab Replace old item_style attributes by a more flexible array 2014-01-08 00:59:57 -05:00
Emmanuel Lepage Vallee 63bb804a45 'Bar' menu cleanup, minor bug fixes 2014-01-05 17:35:23 -05:00
Emmanuel Lepage Vallee 4db83034b8 Refactor menu layout to maximize code sharing 2014-01-05 01:04:40 -05:00
Emmanuel Lepage Vallee 55f1b2a0c1 Add :set_tooltip() method to all wibox.widgets 2014-01-04 16:51:50 -05:00
Emmanuel Lepage Vallee 5ff71f7385 Add new 'bar' menu type 2014-01-04 00:49:20 -05:00