mirror of
				https://github.com/LadybirdBrowser/ladybird.git
				synced 2025-11-03 23:00:58 +00:00 
			
		
		
		
	This was the only thing LibWeb needed from LibGUI, and we can just duplicate the enum in LibWeb and get rid of a bogus dependency.
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2024, Tim Flynn <trflynn89@serenityos.org>
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier: BSD-2-Clause
 | 
						|
 */
 | 
						|
 | 
						|
#include <LibIPC/Decoder.h>
 | 
						|
#include <LibIPC/Encoder.h>
 | 
						|
#include <LibWeb/Page/InputEvent.h>
 | 
						|
 | 
						|
namespace Web {
 | 
						|
 | 
						|
KeyEvent KeyEvent::clone_without_chrome_data() const
 | 
						|
{
 | 
						|
    return { type, key, modifiers, code_point, nullptr };
 | 
						|
}
 | 
						|
 | 
						|
MouseEvent MouseEvent::clone_without_chrome_data() const
 | 
						|
{
 | 
						|
    return { type, position, screen_position, button, buttons, modifiers, wheel_delta_x, wheel_delta_y, nullptr };
 | 
						|
}
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
template<>
 | 
						|
ErrorOr<void> IPC::encode(Encoder& encoder, Web::KeyEvent const& event)
 | 
						|
{
 | 
						|
    TRY(encoder.encode(event.type));
 | 
						|
    TRY(encoder.encode(event.key));
 | 
						|
    TRY(encoder.encode(event.modifiers));
 | 
						|
    TRY(encoder.encode(event.code_point));
 | 
						|
    return {};
 | 
						|
}
 | 
						|
 | 
						|
template<>
 | 
						|
ErrorOr<Web::KeyEvent> IPC::decode(Decoder& decoder)
 | 
						|
{
 | 
						|
    auto type = TRY(decoder.decode<Web::KeyEvent::Type>());
 | 
						|
    auto key = TRY(decoder.decode<KeyCode>());
 | 
						|
    auto modifiers = TRY(decoder.decode<KeyModifier>());
 | 
						|
    auto code_point = TRY(decoder.decode<u32>());
 | 
						|
 | 
						|
    return Web::KeyEvent { type, key, modifiers, code_point, nullptr };
 | 
						|
}
 | 
						|
 | 
						|
template<>
 | 
						|
ErrorOr<void> IPC::encode(Encoder& encoder, Web::MouseEvent const& event)
 | 
						|
{
 | 
						|
    TRY(encoder.encode(event.type));
 | 
						|
    TRY(encoder.encode(event.position));
 | 
						|
    TRY(encoder.encode(event.screen_position));
 | 
						|
    TRY(encoder.encode(event.button));
 | 
						|
    TRY(encoder.encode(event.buttons));
 | 
						|
    TRY(encoder.encode(event.modifiers));
 | 
						|
    TRY(encoder.encode(event.wheel_delta_x));
 | 
						|
    TRY(encoder.encode(event.wheel_delta_y));
 | 
						|
    return {};
 | 
						|
}
 | 
						|
 | 
						|
template<>
 | 
						|
ErrorOr<Web::MouseEvent> IPC::decode(Decoder& decoder)
 | 
						|
{
 | 
						|
    auto type = TRY(decoder.decode<Web::MouseEvent::Type>());
 | 
						|
    auto position = TRY(decoder.decode<Web::DevicePixelPoint>());
 | 
						|
    auto screen_position = TRY(decoder.decode<Web::DevicePixelPoint>());
 | 
						|
    auto button = TRY(decoder.decode<Web::UIEvents::MouseButton>());
 | 
						|
    auto buttons = TRY(decoder.decode<Web::UIEvents::MouseButton>());
 | 
						|
    auto modifiers = TRY(decoder.decode<KeyModifier>());
 | 
						|
    auto wheel_delta_x = TRY(decoder.decode<int>());
 | 
						|
    auto wheel_delta_y = TRY(decoder.decode<int>());
 | 
						|
 | 
						|
    return Web::MouseEvent { type, position, screen_position, button, buttons, modifiers, wheel_delta_x, wheel_delta_y, nullptr };
 | 
						|
}
 |