Commit Graph

9941 Commits

Author SHA1 Message Date
Uli Schlachter 84eb175ccd background container: Deprecate shape_clip property
The previous commit removed the implementation of this property.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-28 14:55:53 +01:00
Uli Schlachter a80323d2d0 Fix some typos in the NEWS
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-28 08:47:20 +01:00
mergify[bot] 5da5d36178
Merge pull request #2619 from awesomeWM/Elv13-patch-1
doc: Fix a copy+paste mistake
2019-01-28 06:53:24 +00:00
Emmanuel Lepage Vallée 8b5d79792b
doc: Fix a copy+paste mistake
The current `awful.widget.layoutlist` is a fork of the so far uncommitted `naughty.widget.actionlist`. It was created because some of the support code for the new `naughty` implementation needed "easier to merge" usage examples. The `layoutlist` was chosen because it was both a low hanging fruit and genuinely useful.
2019-01-27 22:01:10 -05:00
mergify[bot] febbbb69a5
Merge pull request #2617 from psychon/more_enterleave_events
Honor *some* Enter/Leave events with detail==Inferior
2019-01-27 17:48:09 +00:00
Uli Schlachter 1166acd73c Honor *some* Enter/Leave events with detail==Inferior
Commit 19086d70fa made AwesomeWM ignore all Enter/Leave events with
detail==Inferior. However, when leaving a titlebar by moving the cursor
into the actual client window, the corresponding event actually has
detail==Inferior. The same is true for the opposite direction: Leaving a
client window by entering the titlebar.

Thus, this commit fixes the code to handle theses cases again.

This was tested with the following in rc.lua (and with a systray icon
and a client with titlebars).

screen[1].mywibox:connect_signal("mouse::enter", function() print("enter mywibox") end)
screen[1].mywibox:connect_signal("mouse::leave", function() print("leave mywibox") end)
client.connect_signal("mouse::enter", function() print("enter client") end)
client.connect_signal("mouse::leave", function() print("leave client") end)
client.connect_signal("manage", function(c)
    local d = c:titlebar_top()
    d:connect_signal("mouse::enter", function() print("enter titlebar") end)
    d:connect_signal("mouse::leave", function() print("leave titlebar") end)
end)

Fixes: https://github.com/awesomeWM/awesome/pull/2611#issuecomment-457892746
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-27 16:21:31 +01:00
Uli Schlachter ba75da7976 Work around a bug in LGI
cairo_get_source() is not bound correctly, leading to use-after-free
bugs. Cairo catches this and crashes.

Work around this by preserving the current source in a different way.
Instead of using cairo_get_source() and later cairo_set_source(), this
commit wraps everything that changes the current source between
cairo_save() and cairo_restore(). Thus, cairo saves the current source
for us without us having to grab an explicit reference.

Works-around: https://github.com/pavouk/lgi/issues/210
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-27 11:42:51 +01:00
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
Emmanuel Lepage Vallée 56fa91162f
Merge pull request #2503 from Elv13/43_news
Update the NEWS for 4.3
2019-01-26 13:28:09 -05:00
Emmanuel Lepage Vallée 9bfd6a22cc
Merge pull request #2611 from psychon/systray_wibox_enterleave
Ignore all Enter/Leave events with detail==Inferior
2019-01-26 13:18:20 -05:00
Emmanuel Lepage Vallee 22b6e80cad Update the NEWS for 4.3 2019-01-26 13:16:22 -05:00
Emmanuel Lepage Vallee 2cb5a0f0e1 codename: Change for "Too long" 2019-01-26 13:16:21 -05:00
Emmanuel Lepage Vallée d25abddeb7
Merge pull request #2610 from Elv13/arcchat_fixes
Fix the arcchart rounded edges
2019-01-26 13:04:54 -05:00
Uli Schlachter 4c53f9cbc6 spec/beautiful: Don't print noise (#2612)
This gets rid of the following output when running the unit tests:

2019-01-26 18:31:44 E: awesome: beautiful: error loading theme: got an empty table
2019-01-26 18:31:44 E: awesome: beautiful: error loading theme: got an empty table from: ./spec/beautiful/tests/Bad_1.lua
2019-01-26 18:31:44 E: awesome: beautiful: error loading theme: got a function from: ./spec/beautiful/tests/Bad_2.lua
2019-01-26 18:31:44 E: awesome: beautiful: error loading theme: got a number from: ./spec/beautiful/tests/Bad_3.lua
2019-01-26 18:31:44 E: awesome: beautiful: error loading theme: got a nil from: ./spec/beautiful/tests/Bad_4.lua
2019-01-26 18:31:44 E: awesome: Error during a protected call: ./spec/beautiful/tests/Bad_5.lua:2: attempt to index local 'var' (a nil value)
stack traceback:
	./spec/beautiful/tests/Bad_5.lua:2: in main chunk
	[C]: in function 'dofile'
	[C]: in function 'xpcall'
	lib/gears/protected_call.lua:36: in function <lib/gears/protected_call.lua:35>
	(...tail calls...)
	lib/beautiful/init.lua:224: in function 'init'
	spec/beautiful/init_spec.lua:56: in function <spec/beautiful/init_spec.lua:25>
	[C]: in function 'xpcall'
	/usr/share/lua/5.2/busted/core.lua:178: in function 'safe'
	/usr/share/lua/5.2/busted/init.lua:40: in function 'executor'
	...
	/usr/share/lua/5.2/busted/core.lua:312: in function 'execute'
	/usr/share/lua/5.2/busted/block.lua:155: in function 'execute'
	/usr/share/lua/5.2/busted/init.lua:7: in function 'executor'
	/usr/share/lua/5.2/busted/core.lua:312: in function </usr/share/lua/5.2/busted/core.lua:312>
	[C]: in function 'xpcall'
	/usr/share/lua/5.2/busted/core.lua:178: in function 'safe'
	/usr/share/lua/5.2/busted/core.lua:312: in function 'execute'
	/usr/share/lua/5.2/busted/execute.lua:58: in function 'execute'
	/usr/share/lua/5.2/busted/runner.lua:174: in function </usr/share/lua/5.2/busted/runner.lua:11>
	/usr/bin/busted:3: in main chunk
	[C]: in ?
2019-01-26 18:31:44 E: awesome: beautiful: error loading theme: got a nil from: ./spec/beautiful/tests/Bad_5.lua
2019-01-26 18:31:44 E: awesome: Error during a protected call: cannot open ./spec/beautiful/tests/NO_FILE: No such file or directory
stack traceback:
	[C]: in function 'dofile'
	[C]: in function 'xpcall'
	lib/gears/protected_call.lua:36: in function <lib/gears/protected_call.lua:35>
	(...tail calls...)
	lib/beautiful/init.lua:224: in function 'init'
	spec/beautiful/init_spec.lua:57: in function <spec/beautiful/init_spec.lua:25>
	[C]: in function 'xpcall'
	/usr/share/lua/5.2/busted/core.lua:178: in function 'safe'
	/usr/share/lua/5.2/busted/init.lua:40: in function 'executor'
	/usr/share/lua/5.2/busted/core.lua:312: in function </usr/share/lua/5.2/busted/core.lua:312>
	...
	/usr/share/lua/5.2/busted/core.lua:312: in function 'execute'
	/usr/share/lua/5.2/busted/block.lua:155: in function 'execute'
	/usr/share/lua/5.2/busted/init.lua:7: in function 'executor'
	/usr/share/lua/5.2/busted/core.lua:312: in function </usr/share/lua/5.2/busted/core.lua:312>
	[C]: in function 'xpcall'
	/usr/share/lua/5.2/busted/core.lua:178: in function 'safe'
	/usr/share/lua/5.2/busted/core.lua:312: in function 'execute'
	/usr/share/lua/5.2/busted/execute.lua:58: in function 'execute'
	/usr/share/lua/5.2/busted/runner.lua:174: in function </usr/share/lua/5.2/busted/runner.lua:11>
	/usr/bin/busted:3: in main chunk
	[C]: in ?
2019-01-26 18:31:44 E: awesome: beautiful: error loading theme: got a nil from: ./spec/beautiful/tests/NO_FILE

Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-26 12:54:31 -05:00
Uli Schlachter 19086d70fa Ignore all Enter/Leave events with detail==Inferior
These events are generated when the mouse pointer moves between our
window and one of its child windows. For our purposes, this never counts
as an enter or leave, so just ignore these events completely.

Fixes: https://github.com/awesomeWM/awesome/issues/2560
Signed-off-by: Uli Schlachter <psychon@znc.in>
2019-01-26 18:26:35 +01:00
Emmanuel Lepage Vallée f735a60b95
Merge pull request #2511 from Elv13/xmas_2k18_5
Add the layoutlist
2019-01-26 12:22:03 -05:00
Sorky bf62695f76 awful.menu: Move code from rc.lua to awful.menu
Fixes: #2524
2019-01-26 12:19:05 -05:00
Emmanuel Lepage Vallee dbb552097c arcchart: Also compute the sum when the limits are provided.
The result was used even when it wasn't computed.
2019-01-26 12:13:13 -05:00
Emmanuel Lepage Vallee 090f80d173 arcchart: Place the rounded edge in the right side of the arc. 2019-01-26 12:13:13 -05:00
Emmanuel Lepage Vallee 9efcf9df87 shape.arc: Prevent an angle underflow when rounded edges are enabled.
Fixes #2604
2019-01-26 12:13:13 -05:00
Emmanuel Lepage Vallee 4524a7880d tests: Test the layoutlist 2019-01-26 01:34:59 -05:00
Emmanuel Lepage Vallee 8b60c05118 widget: Add a layoutlist widget
Like taglist and tasklist, but for layouts
2019-01-26 01:34:59 -05: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