Prevent manager from handling override_redirect windows
This commit is contained in:
parent
c51d1525ee
commit
02861a63d4
@ -45,6 +45,12 @@ module Uh
|
||||
@display.grab_key keysym.to_s, mod_mask
|
||||
end
|
||||
|
||||
def manage window
|
||||
return if window.override_redirect?
|
||||
@clients << client = Client.new(window)
|
||||
@events.emit :manage, args: client
|
||||
end
|
||||
|
||||
def handle_next_event
|
||||
handle @display.next_event
|
||||
end
|
||||
@ -74,8 +80,7 @@ module Uh
|
||||
end
|
||||
|
||||
def handle_map_request event
|
||||
@clients << client = Client.new(event.window)
|
||||
@events.emit :manage, args: client
|
||||
manage event.window
|
||||
end
|
||||
|
||||
def check_other_wm!
|
||||
|
@ -106,6 +106,32 @@ module Uh
|
||||
end
|
||||
end
|
||||
|
||||
describe '#manage' do
|
||||
let(:window) { instance_spy Window, override_redirect?: false }
|
||||
|
||||
it 'registers a new client wrapping the given window' do
|
||||
manager.manage window
|
||||
expect(manager.clients[0])
|
||||
.to be_a(Client)
|
||||
.and have_attributes(window: window)
|
||||
end
|
||||
|
||||
it 'ignores event when window has override redirect' do
|
||||
allow(window).to receive(:override_redirect?) { true }
|
||||
expect { manager.manage window }.not_to change { manager.clients }
|
||||
end
|
||||
|
||||
it 'emits :manage event with the registered client' do
|
||||
events.on :manage, &block
|
||||
expect(block).to receive :call do |client|
|
||||
expect(client)
|
||||
.to be_a(Client)
|
||||
.and have_attributes(window: window)
|
||||
end
|
||||
manager.manage window
|
||||
end
|
||||
end
|
||||
|
||||
describe '#handle_next_event' do
|
||||
it 'handles the next available event on display' do
|
||||
event = double 'event'
|
||||
@ -178,20 +204,8 @@ module Uh
|
||||
context 'when map_request event is given' do
|
||||
let(:event) { double 'event', type: :map_request, window: :window }
|
||||
|
||||
it 'registers a new client wrapping the event window' do
|
||||
manager.handle event
|
||||
expect(manager.clients[0])
|
||||
.to be_a(Client)
|
||||
.and have_attributes(window: :window)
|
||||
end
|
||||
|
||||
it 'emits :manage event with the registered client' do
|
||||
events.on :manage, &block
|
||||
expect(block).to receive :call do |client|
|
||||
expect(client)
|
||||
.to be_a(Client)
|
||||
.and have_attributes(window: :window)
|
||||
end
|
||||
it 'manages the event window' do
|
||||
expect(manager).to receive(:manage).with :window
|
||||
manager.handle event
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user