Switch to the new button handling API (instead of awful.button)
This commit is contained in:
parent
5713f00e1b
commit
5cebb6a961
14
README.md
14
README.md
|
@ -235,11 +235,14 @@ here is the list:
|
|||
| append | Append an existing (but unused) item | the item | --- |
|
||||
|
||||
|
||||
###Signals
|
||||
|
||||
Menu also emit many signals, the syntax is usually `PROPERTY_NAME::changed`.
|
||||
Some others are `item::moved`, `item::swapped`, `item::removed`, `item::appended`
|
||||
|
||||
Most item_layout also repackage the default widget signals. It usually does the
|
||||
same as using the `buttonX` menu attributes, but is preferrable in some scenarios
|
||||
like when a modifier is applied.
|
||||
|
||||
| Name | Description | Arguments |
|
||||
| ----------------- | ----------------------------- | ------------------------ |
|
||||
|
@ -256,8 +259,15 @@ An example of how to use them:
|
|||
|
||||
```lua
|
||||
local menubar = radical.bar{}
|
||||
menubar:connect_signal("button::press",function(data,item,button)
|
||||
print("Foo!",item.text,button,data.rowcount)
|
||||
menubar:connect_signal("button::press",function(data,item,button,mods)
|
||||
if mods.Control then
|
||||
print("Foo menu pressed!",item.text,button,data.rowcount)
|
||||
end
|
||||
end)
|
||||
|
||||
-- Also work on items
|
||||
menubar:add_item{text="bar"}:connect_signal("button::release",function(d,i,b,m)
|
||||
print("bar click released!")
|
||||
end)
|
||||
```
|
||||
|
||||
|
|
17
bar.lua
17
bar.lua
|
@ -82,7 +82,7 @@ local function setup_buttons(data,item,args)
|
|||
local buttons = {}
|
||||
for i=1,10 do
|
||||
if args["button"..i] then
|
||||
buttons[#buttons+1] = button({},i,args["button"..i])
|
||||
buttons[i] = args["button"..i]
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -93,18 +93,23 @@ local function setup_buttons(data,item,args)
|
|||
|
||||
-- Scrool up
|
||||
if not buttons[4] then
|
||||
buttons[#buttons+1] = button({},4,function()
|
||||
buttons[4] = function()
|
||||
data:scroll_up()
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
-- Scroll down
|
||||
if not buttons[5] then
|
||||
buttons[#buttons+1] = button({},5,function()
|
||||
buttons[5] = function()
|
||||
data:scroll_down()
|
||||
end)
|
||||
end
|
||||
end
|
||||
item.widget:buttons( util.table.join(unpack(buttons)))
|
||||
|
||||
item:connect_signal("button::press",function(_m,_i,button_id,mods)
|
||||
if #mods == 0 and buttons[button_id] then
|
||||
buttons[button_id]()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
local function setup_item(data,item,args)
|
||||
|
|
24
context.lua
24
context.lua
|
@ -10,7 +10,6 @@ local beautiful = require( "beautiful" )
|
|||
local cairo = require( "lgi" ).cairo
|
||||
local awful = require( "awful" )
|
||||
local util = require( "awful.util" )
|
||||
local button = require( "awful.button" )
|
||||
local layout = require( "radical.layout" )
|
||||
local checkbox = require( "radical.widgets.checkbox" )
|
||||
local arrow_style = require( "radical.style.arrow" )
|
||||
|
@ -178,39 +177,44 @@ local function setup_buttons(data,item,args)
|
|||
local buttons = {}
|
||||
for i=1,10 do
|
||||
if args["button"..i] then
|
||||
buttons[#buttons+1] = button({},i,args["button"..i])
|
||||
buttons[i] = args["button"..i]
|
||||
end
|
||||
end
|
||||
|
||||
-- Click to open sub_menu
|
||||
if not buttons[1] and data.sub_menu_on == base.event.BUTTON1 then
|
||||
buttons[#buttons+1] = button({},1,function() base._execute_sub_menu(data,item) end)
|
||||
buttons[1] = function() base._execute_sub_menu(data,item) end
|
||||
end
|
||||
|
||||
--Hide on right click
|
||||
if not buttons[3] then
|
||||
buttons[#buttons+1] = button({},3,function()
|
||||
buttons[3] = function()
|
||||
data.visible = false
|
||||
if data.parent_geometry and data.parent_geometry.is_menu then
|
||||
data.parent_geometry.visible = false
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
-- Scroll up
|
||||
if not buttons[4] then
|
||||
buttons[#buttons+1] = button({},4,function()
|
||||
buttons[4] = function()
|
||||
data:scroll_up()
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
-- Scroll down
|
||||
if not buttons[5] then
|
||||
buttons[#buttons+1] = button({},5,function()
|
||||
buttons[5] = function()
|
||||
data:scroll_down()
|
||||
end)
|
||||
end
|
||||
end
|
||||
item.widget:buttons( util.table.join(unpack(buttons)))
|
||||
|
||||
item:connect_signal("button::press",function(_m,_i,button_id,mods)
|
||||
if #mods == 0 and buttons[button_id] then
|
||||
buttons[button_id]()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
local function setup_item(data,item,args)
|
||||
|
|
21
embed.lua
21
embed.lua
|
@ -43,28 +43,33 @@ local function setup_item(data,item,args)
|
|||
local buttons = {}
|
||||
for i=1,10 do
|
||||
if args["button"..i] then
|
||||
buttons[#buttons+1] = button({},i,args["button"..i])
|
||||
buttons[i] = args["button"..i]
|
||||
end
|
||||
end
|
||||
if not buttons[3] then --Hide on right click
|
||||
buttons[#buttons+1] = button({},3,function()
|
||||
buttons[3] = function()
|
||||
data.visible = false
|
||||
if data.parent_geometry and data.parent_geometry.is_menu then
|
||||
data.parent_geometry.visible = false
|
||||
end
|
||||
end)
|
||||
end
|
||||
end
|
||||
if not buttons[4] then
|
||||
buttons[#buttons+1] = button({},4,function()
|
||||
buttons[4] = function()
|
||||
data:scroll_up()
|
||||
end)
|
||||
end
|
||||
end
|
||||
if not buttons[5] then
|
||||
buttons[#buttons+1] = button({},5,function()
|
||||
buttons[5] = function()
|
||||
data:scroll_down()
|
||||
end)
|
||||
end
|
||||
end
|
||||
item.widget:buttons( util.table.join(unpack(buttons)))
|
||||
|
||||
item:connect_signal("button::press",function(_m,_i,button_id,mods)
|
||||
if #mods == 0 and buttons[button_id] then
|
||||
buttons[button_id]()
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
local function new(args)
|
||||
|
|
|
@ -95,12 +95,15 @@ end
|
|||
-- Proxy all events to the parent
|
||||
function module.setup_event(data,item,widget)
|
||||
local widget = widget or item.widget
|
||||
|
||||
-- Setup data signals
|
||||
widget:connect_signal("button::press",function(_,__,___,id,mod)
|
||||
local mods_invert = {}
|
||||
for k,v in ipairs(mod) do
|
||||
mods_invert[v] = i
|
||||
end
|
||||
data:emit_signal("button::press",item,id,mods_invert)
|
||||
item:emit_signal("button::press",item,id,mods_invert)
|
||||
end)
|
||||
widget:connect_signal("button::release",function(_,__,___,id,mod)
|
||||
local mods_invert = {}
|
||||
|
@ -108,12 +111,15 @@ function module.setup_event(data,item,widget)
|
|||
mods_invert[v] = i
|
||||
end
|
||||
data:emit_signal("button::release",item,id,mods_invert)
|
||||
item:emit_signal("button::release",item,id,mods_invert)
|
||||
end)
|
||||
widget:connect_signal("mouse::enter",function(b,t)
|
||||
data:emit_signal("mouse::enter",item)
|
||||
item:emit_signal("mouse::enter",item)
|
||||
end)
|
||||
widget:connect_signal("mouse::leave",function(b,t)
|
||||
data:emit_signal("mouse::leave",item)
|
||||
item:emit_signal("mouse::leave",item)
|
||||
end)
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue