mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 08:07:44 +00:00
CatDog: Switch to new mouse-tracking method
This commit is contained in:
parent
2f38cad987
commit
f717008bde
3 changed files with 8 additions and 18 deletions
|
@ -7,7 +7,6 @@
|
||||||
#include "CatDog.h"
|
#include "CatDog.h"
|
||||||
#include <LibGUI/Painter.h>
|
#include <LibGUI/Painter.h>
|
||||||
#include <LibGUI/Window.h>
|
#include <LibGUI/Window.h>
|
||||||
#include <LibGUI/WindowServerConnection.h>
|
|
||||||
|
|
||||||
void CatDog::timer_event(Core::TimerEvent&)
|
void CatDog::timer_event(Core::TimerEvent&)
|
||||||
{
|
{
|
||||||
|
@ -105,13 +104,14 @@ void CatDog::paint_event(GUI::PaintEvent& event)
|
||||||
painter.blit(Gfx::IntPoint(0, 0), *m_curr_bmp, m_curr_bmp->rect());
|
painter.blit(Gfx::IntPoint(0, 0), *m_curr_bmp, m_curr_bmp->rect());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CatDog::mousemove_event(GUI::MouseEvent& event)
|
void CatDog::track_mouse_move(Gfx::IntPoint const& point)
|
||||||
{
|
{
|
||||||
if (!m_roaming)
|
if (!m_roaming)
|
||||||
return;
|
return;
|
||||||
if (m_temp_pos == event.position())
|
Gfx::IntPoint relative_point = point - window()->position();
|
||||||
|
if (m_temp_pos == relative_point)
|
||||||
return;
|
return;
|
||||||
m_temp_pos = event.position();
|
m_temp_pos = relative_point;
|
||||||
m_timer.start();
|
m_timer.start();
|
||||||
if (m_sleeping) {
|
if (m_sleeping) {
|
||||||
m_curr_bmp = m_alert;
|
m_curr_bmp = m_alert;
|
||||||
|
@ -128,16 +128,6 @@ void CatDog::mousedown_event(GUI::MouseEvent& event)
|
||||||
on_click();
|
on_click();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CatDog::track_cursor_globally()
|
|
||||||
{
|
|
||||||
VERIFY(window());
|
|
||||||
auto window_id = window()->window_id();
|
|
||||||
VERIFY(window_id >= 0);
|
|
||||||
|
|
||||||
set_global_cursor_tracking(true);
|
|
||||||
GUI::WindowServerConnection::the().async_set_global_cursor_tracking(window_id, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CatDog::context_menu_event(GUI::ContextMenuEvent& event)
|
void CatDog::context_menu_event(GUI::ContextMenuEvent& event)
|
||||||
{
|
{
|
||||||
if (on_context_menu_request)
|
if (on_context_menu_request)
|
||||||
|
|
|
@ -6,22 +6,23 @@
|
||||||
|
|
||||||
#include <LibCore/ElapsedTimer.h>
|
#include <LibCore/ElapsedTimer.h>
|
||||||
#include <LibGUI/Menu.h>
|
#include <LibGUI/Menu.h>
|
||||||
|
#include <LibGUI/MouseTracker.h>
|
||||||
#include <LibGUI/Widget.h>
|
#include <LibGUI/Widget.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
class CatDog final : public GUI::Widget {
|
class CatDog final : public GUI::Widget
|
||||||
|
, GUI::MouseTracker {
|
||||||
C_OBJECT(CatDog);
|
C_OBJECT(CatDog);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void timer_event(Core::TimerEvent&) override;
|
virtual void timer_event(Core::TimerEvent&) override;
|
||||||
virtual void paint_event(GUI::PaintEvent& event) override;
|
virtual void paint_event(GUI::PaintEvent& event) override;
|
||||||
virtual void mousemove_event(GUI::MouseEvent& event) override;
|
virtual void track_mouse_move(Gfx::IntPoint const& point) override;
|
||||||
virtual void mousedown_event(GUI::MouseEvent& event) override;
|
virtual void mousedown_event(GUI::MouseEvent& event) override;
|
||||||
virtual void context_menu_event(GUI::ContextMenuEvent& event) override;
|
virtual void context_menu_event(GUI::ContextMenuEvent& event) override;
|
||||||
|
|
||||||
void track_cursor_globally();
|
|
||||||
void start_the_timer() { m_timer.start(); }
|
void start_the_timer() { m_timer.start(); }
|
||||||
|
|
||||||
Function<void()> on_click;
|
Function<void()> on_click;
|
||||||
|
|
|
@ -59,7 +59,6 @@ int main(int argc, char** argv)
|
||||||
context_menu->add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
|
context_menu->add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); }));
|
||||||
|
|
||||||
window->show();
|
window->show();
|
||||||
catdog_widget.track_cursor_globally();
|
|
||||||
catdog_widget.start_timer(250, Core::TimerShouldFireWhenNotVisible::Yes);
|
catdog_widget.start_timer(250, Core::TimerShouldFireWhenNotVisible::Yes);
|
||||||
catdog_widget.start_the_timer(); // timer for "mouse sleep detection"
|
catdog_widget.start_the_timer(); // timer for "mouse sleep detection"
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue