Commit Graph

9320 Commits

Author SHA1 Message Date
Uli Schlachter 67cf1469f0 Change the way the shape is done in the background container
Previously, the background container "just" used the shape and drew a
line around it. This means that half the line will be inside of the
shape and half of it will be outside. Thus, this hides the actual shape
that is used.

This commit changes that so that the line is added outside of the shape.
It does this via some tricks:

- In :before_draw_children(), :push_group() is used to redirect drawing
  of the child widget to a temporary surface.
- In :after_draw_children(), the border is added to this group.
  + For this, another temporary surface is created. It will be used as a
    mask.
  + The inside of the shape on this mask is cleared, everything else is
    filled. Thus, the mask now contains everything "not content".
  + Everything inside the mask is filled with the background color.
- Also in :after_draw_children(), the group is drawn to the actual
  target surface.
  + Again, this needs a mask.
  + This time, we draw the shape to the mask with twice the border width.
    Thus, half of this line will be outside of the shape.
  + Then, the shape itself is also filled so that the mask contains the
    shape and the border.
  + This mask is then used to copy the right parts of the temporary
    surface were the child widget and border was drawn to the actual
    target surface that will be visible on screen.

This approach has some upsides. Because we no longer have "half the
border" above content, colors with some transparency work fine for the
border. Also, this should avoid issues with anti-aliasing, because e.g.
the border is not just drawn with the border width, but also further out
to everything else so that the background cannot "bleed through".

Fixes: https://github.com/awesomeWM/awesome/issues/2516
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-27 11:42:36 +01:00
mergify[bot] e8bf75ef3c
Merge pull request #2592 from Sorky/patch-1
beautiful.init: Fix return values and improve doco. fixes: #2588
2019-01-25 15:41:15 +00:00
Sorky 366be2105a beautiful.init: Fix return values and improve doco. fixes: #2588 #2592
squashing updates from review by blueyed

Added busted tests

Fixed test files EOF

Remove Travis warning
2019-01-25 22:56:41 +11:00
Emmanuel Lepage Vallée 7e7733c6d1
Merge pull request #2521 from Elv13/modifiers
awesome: Add a `modifiers` field.
2019-01-24 23:59:54 -05:00
Emmanuel Lepage Vallée c87e7aad56
Merge pull request #2510 from Elv13/xmas_2k18_4
Add the popup widget take 2 (only relevant commits)
2019-01-24 23:24:22 -05:00
mergify[bot] b0bfcea1a1
Merge pull request #2607 from Sorky/patch-4
menubar.utils.lua - remove "function is_format_supported" by making i…
2019-01-24 20:03:20 +00:00
Emmanuel Lepage Vallee e3c1ecfd40 docs: Better document how widgets work
Ref: #1373
2019-01-24 10:58:45 -05:00
Emmanuel Lepage Vallee 6c1f9ec651 tests: Test the awful.popup 2019-01-24 10:58:45 -05:00
Emmanuel Lepage Vallee 031c773658 popup: Add a popup module to awful
This module is half way between the tooltip and the raw wibox.

It supports the following features:

 * Auto resize to its widget size
 * Support parent objects and placement

Fix #1683
2019-01-24 10:58:45 -05:00
Emmanuel Lepage Vallée 7f0e2e6bbf
Merge pull request #2509 from Elv13/xmas_2k18_3
Fix some tag.layouts corner cases
2019-01-24 08:50:41 -05:00
Emmanuel Lepage Vallee 063ae48438 awful.tag: Select the fallback layout from the list of layouts.
This isn't 100% consistent with the old fallback, but avoids the
case where it has an explicit list to pick from and picks something
else.
2019-01-24 06:31:57 -05:00
Emmanuel Lepage Vallee 831e92410e tag.layouts: Skip get_layout when looking for the current layout.
If the `layouts` are set during initialization, `t.layout` will
return `floating` if `t.layouts` is added before `t.layout`. By
using the raw layout, the fallback doesn't kicks in.
2019-01-24 06:31:57 -05:00
Emmanuel Lepage Vallee 2892648916 awful.layout: Add a deprecated notice.
It was already deprecated, but this wasn't documented and silently
fixed.
2019-01-24 06:31:57 -05:00
Emmanuel Lepage Vallee eb3ca746ca awful.layout: Support the current tag layouts in `.inc()`.
Also "modernize" the code by leveraging gears.table for more logic.
2019-01-24 06:31:57 -05:00
Emmanuel Lepage Vallee 8757e15d30 gears: Add `find_keys` and `find_first_key` to `gears.table`.
Fills a small gap between keys_filters and hasitem.
2019-01-24 06:31:57 -05:00
Sorky f31fbe1220
menubar.utils.lua - remove "function is_format_supported" by making i… #2601
Removing an end of comment block that got left in by accident
2019-01-24 19:46:56 +11:00
mergify[bot] c1f0013699
Merge pull request #2603 from Veratil/add-menubar-science-category
Add Science category to menubar menu generation categories table.
2019-01-21 22:25:18 +00:00
Kevin Zander 012f130738 Add Science category to menubar menu generation categories table. Fixes #2602 2019-01-21 11:58:44 -06:00
mergify[bot] 98985f67be
Merge pull request #2601 from Sorky/patch-3
menubar.utils.lua - remove "function is_format_supported" by making i…
2019-01-21 14:29:04 +00:00
Sorky 9927b7a88d squash 2019-01-21 21:37:45 +11:00
Emmanuel Lepage Vallee 94937595c2 doc: Use the modifier name instead of the keysym for the alttab example 2019-01-21 03:14:26 -05:00
Emmanuel Lepage Vallee 0d80b3f0e9 keygrabber: Do not try to guess the modifiers name
There is no an API to query the correct value

Fixes #2515
2019-01-21 03:14:26 -05:00
Emmanuel Lepage Vallee b466db955f shims: Add awesome._modifiers 2019-01-21 03:13:26 -05:00
Emmanuel Lepage Vallee 5e6b02274e luaa: Add a way to query the currently pressed modifiers.
This will make awful.key.execute less unreliable
2019-01-21 03:13:26 -05:00
Uli Schlachter 6f2b7435c3 Remove unused Xlib Display* from luaA_get_modifiers
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-21 01:08:48 -05:00
Uli Schlachter 333f92098a Use existing keymap to map codes to symbols
This also ports the code from libX11 to using xkbcommon for the job.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-21 01:08:48 -05:00
Uli Schlachter 33cd091d02 Use existing xkbcommon functionality instead of XKeysymToString
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-21 01:08:48 -05:00
Uli Schlachter 56db19fbef luaA_get_modifiers: XCBify XGetModifierMapping
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-21 01:08:48 -05:00
Uli Schlachter 5b7edf0574 get_modifier_name: Use XCB defines instead of Xlib's
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-21 01:08:48 -05:00
Emmanuel Lepage Vallee 5ab547fbfd tests: Test the awesome.modifiers 2019-01-21 01:08:48 -05:00
Emmanuel Lepage Vallee 44c5ca41d9 awesome: Add a `modifiers` field. 2019-01-20 22:39:43 -05:00
mergify[bot] 3fbb96ecac
Merge pull request #2595 from blueyed/sloppy
awesomerc.lua: fix sloppy focus: do not raise
2019-01-19 12:26:37 +00:00
Daniel Hahler 81a0a8cc48 awesomerc.lua: fix sloppy focus: do not raise
Fixes https://github.com/awesomeWM/awesome/issues/2594.
2019-01-19 09:48:01 +01:00
mergify[bot] 8fe06f95d0
Merge pull request #2567 from blueyed/cmake-args
Makefile: run CMake with CMAKE_ARGS defined
2019-01-15 01:11:24 +00:00
mergify[bot] 86ab272045
Merge pull request #2589 from psychon/theme_path
Make beautiful.theme_path actually work again
2019-01-14 13:06:25 +00:00
Uli Schlachter 3145272292 beautiful.init(): reset theme_path if called with a table
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-14 09:18:58 +01:00
Uli Schlachter 69a0de3f03 Make beautiful.theme_path actually work
Commit ac8af66005 added beautiful.theme_path, which is used to save the
directory that contains the theme file that was loaded. Just two months
later, commit ca12473584 broke this code by adding a __newindex
metamethod. This caused the assignment to beautiful.theme_path to be
redirected to the theme. However, the theme is immediately replaced by
beautiful.init() after setting up the theme_path, so this assignment got
lost.

Fix this by using rawset() to bypass the metamethod.

Fixes: https://github.com/awesomeWM/awesome/issues/2573
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-14 09:18:40 +01:00
Emmanuel Lepage Vallée 708e522d56
Merge pull request #2586 from Sorky/patch-3
awesomerc.lua: show hotkeys popup on mouse screen.   fixes: #2583,   fixes: #2585
2019-01-14 00:29:02 -05:00
Emmanuel Lepage Vallee 4b76ca9d38 doc: Fix awful.hotkeys_popup.show_help formatting. 2019-01-13 23:57:04 -05:00
Sorky fec7aaa569 Unify the myawesomemenu style 2019-01-13 23:52:21 -05:00
Sorky cf5b0b51ef Update awesomerc.lua
Alternative fix for hotkey_popup via awful menu showing on wrong screen
2019-01-13 23:50:58 -05:00
Daniel Hahler 415c92a08a squash! Makefile: run CMake with CMAKE_ARGS defined
Only if specified on command line.
2019-01-12 15:41:02 +01:00
Daniel Hahler 1535934ef9 Merge remote-tracking branch 'origin/master' into cmake-args 2019-01-12 15:37:59 +01:00
Daniel Hahler c20573e6dd
Makefile: keep cmake-build as default target (#2579)
Fixes https://github.com/awesomeWM/awesome/issues/2576.
2019-01-12 11:46:23 +01:00
Daniel Hahler d2fd15cf99
cmake: pass DO_COVERAGE=1 in env for tests/run.sh (#2575)
`$DO_COVERAGE` is used in tests/run.sh, and should be set with the
`DO_COVERAGE` CMake option.
2019-01-11 17:04:23 +01:00
Daniel Hahler 0b36da2730
Makefile: get rid of cmake-build (#2547)
* Makefile: all: only depend on cmake-build

Previously `make` would first run `cmake-build` (`make` in `build/`),
and then run `make -C build awesome` afterwards again (which gets built
by the first step already).

* Makefile: get rid of cmake-build

* Travis: testing previous commits: make distclean

Otherwise it might fail due to permission errors for existing files:

https://travis-ci.org/awesomeWM/awesome/jobs/476612117#L2785

    -- Build files have been written to: /home/travis/build/awesomeWM/awesome/build
    [  1%] Generating manpages/man1/awesome.1
    [  2%] Generating manpages/man1/awesome.1.gz
    /bin/sh: 1: cannot create /home/travis/build/awesomeWM/awesome/build/manpages/man1/awesome.1.gz: Permission denied
    make[3]: *** [manpages/man1/awesome.1.gz] Error 2
    make[2]: *** [CMakeFiles/man.dir/all] Error 2
    make[1]: *** [all] Error 2
    make: *** [cmake-build] Error 2
2019-01-11 17:04:04 +01:00
Daniel Hahler d00d3d4702
cmake: improve check target(s) deps (#2571)
* cmake: use add_custom_target/add_dependencies instead of CHECK_TARGETS

This makes it fail in case of errors explicitly.  Previously appending
to CHECK_TARGETS in tests/examples/CMakeLists.txt was silently ignored.

* cmake: check: depend on check-unit always

Without busted this will print a message only, but that is good to have.
(I was confused why "check" would not depend on "check-unit" when
looking at the generated Makefile (which was caused due to some luarocks
environment being active without busted))
2019-01-11 17:03:32 +01:00
Daniel Hahler 3804040dbe
Travis: coverage: gcov: process .gnco separately (#2574)
Also uses consistent flags with codecov, i.e. lua53 also with gcov / `#c_code`.
2019-01-10 23:06:54 +01:00
Daniel Hahler f75dacb504
awesome-client: handle multiple args (#2551)
`awesome-client 'return 1' 'return 2'` would only run the first command.

This also fixes other issues reported by shellcheck, and uses `read`
directly to allow `shellcheck` to parse that construct correctly.
2019-01-10 19:10:11 +01:00
Daniel Hahler ac34a687c0
cmake: clarify comment for check-unit with not found busted (#2566) 2019-01-10 19:09:40 +01:00