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
|
@display.grab_key keysym.to_s, mod_mask
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def manage window
|
||||||
|
return if window.override_redirect?
|
||||||
|
@clients << client = Client.new(window)
|
||||||
|
@events.emit :manage, args: client
|
||||||
|
end
|
||||||
|
|
||||||
def handle_next_event
|
def handle_next_event
|
||||||
handle @display.next_event
|
handle @display.next_event
|
||||||
end
|
end
|
||||||
@ -74,8 +80,7 @@ module Uh
|
|||||||
end
|
end
|
||||||
|
|
||||||
def handle_map_request event
|
def handle_map_request event
|
||||||
@clients << client = Client.new(event.window)
|
manage event.window
|
||||||
@events.emit :manage, args: client
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_other_wm!
|
def check_other_wm!
|
||||||
|
@ -106,6 +106,32 @@ module Uh
|
|||||||
end
|
end
|
||||||
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
|
describe '#handle_next_event' do
|
||||||
it 'handles the next available event on display' do
|
it 'handles the next available event on display' do
|
||||||
event = double 'event'
|
event = double 'event'
|
||||||
@ -178,20 +204,8 @@ module Uh
|
|||||||
context 'when map_request event is given' do
|
context 'when map_request event is given' do
|
||||||
let(:event) { double 'event', type: :map_request, window: :window }
|
let(:event) { double 'event', type: :map_request, window: :window }
|
||||||
|
|
||||||
it 'registers a new client wrapping the event window' do
|
it 'manages the event window' do
|
||||||
manager.handle event
|
expect(manager).to receive(:manage).with :window
|
||||||
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
|
|
||||||
manager.handle event
|
manager.handle event
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user