Skip to content

Commit

Permalink
Add support for disabling mouse interactions with the background (#176)
Browse files Browse the repository at this point in the history
Signed-off-by: Alexis Maiquez <[email protected]>
  • Loading branch information
Almamu committed Sep 23, 2023
1 parent 89612ea commit 21c38d9
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 3 deletions.
10 changes: 10 additions & 0 deletions src/WallpaperEngine/Application/CApplicationContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ struct option long_options[] = {
{ "set-property", required_argument, nullptr, 'o' },
{ "noautomute", no_argument, nullptr, 'm' },
{ "no-fullscreen-pause", no_argument, nullptr, 'n' },
{ "disable-mouse", no_argument, nullptr, 'e' },
{ nullptr, 0, nullptr, 0 }
};

Expand Down Expand Up @@ -72,6 +73,10 @@ CApplicationContext::CApplicationContext (int argc, char* argv[])
.volume = 15,
.automute = true
},
.mouse =
{
.enabled = true,
},
.screenshot =
{
.take = false,
Expand Down Expand Up @@ -185,6 +190,10 @@ CApplicationContext::CApplicationContext (int argc, char* argv[])
this->settings.audio.automute = false;
break;

case 'e':
this->settings.mouse.enabled = false;
break;

default:
sLog.out ("Default on path parsing: ", optarg);
break;
Expand Down Expand Up @@ -280,4 +289,5 @@ void CApplicationContext::printHelp (const char* route)
sLog.out ("\t--list-properties\t\t\tList all the available properties and their possible values");
sLog.out ("\t--set-property <name=value>\tOverrides the default value of the given property");
sLog.out ("\t--no-fullscreen-pause\tPrevents the background pausing when an app is fullscreen");
sLog.out ("\t--disable-mouse\tDisables mouse interactions");
}
9 changes: 9 additions & 0 deletions src/WallpaperEngine/Application/CApplicationContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,15 @@ namespace WallpaperEngine::Application
bool automute;
} audio;

/**
* Mouse input settings
*/
struct
{
/** If the mouse movement is enabled */
bool enabled;
} mouse;

/**
* Screenshot settings
*/
Expand Down
5 changes: 5 additions & 0 deletions src/WallpaperEngine/Application/CApplicationState.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,10 @@ namespace WallpaperEngine::Application
bool enabled;
int volume;
} audio{};

struct
{
bool enabled;
} mouse{};
};
}
2 changes: 1 addition & 1 deletion src/WallpaperEngine/Input/CMouseInput.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ namespace WallpaperEngine::Input
/**
* The virtual pointer's position
*/
virtual glm::dvec2 position () const = 0;
[[nodiscard]] virtual glm::dvec2 position () const = 0;
};
}

6 changes: 6 additions & 0 deletions src/WallpaperEngine/Input/Drivers/CGLFWMouseInput.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ CGLFWMouseInput::CGLFWMouseInput (Render::Drivers::CX11OpenGLDriver* driver) :

void CGLFWMouseInput::update ()
{
if (!this->m_driver->getApp ().getContext ().settings.mouse.enabled)
{
this->m_reportedPosition = {0, 0};
return;
}

// update current mouse position
glfwGetCursorPos (this->m_driver->getWindow (), &this->m_mousePosition.x, &this->m_mousePosition.y);
// interpolate to the new position
Expand Down
2 changes: 1 addition & 1 deletion src/WallpaperEngine/Input/Drivers/CGLFWMouseInput.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ namespace WallpaperEngine::Input::Drivers
/**
* The virtual pointer's position
*/
glm::dvec2 position () const override;
[[nodiscard]] glm::dvec2 position () const override;

private:
Render::Drivers::CX11OpenGLDriver* m_driver;
Expand Down
5 changes: 5 additions & 0 deletions src/WallpaperEngine/Input/Drivers/CWaylandMouseInput.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ void CWaylandMouseInput::update ()

glm::dvec2 CWaylandMouseInput::position() const
{
if (!this->waylandDriver->getApp().getContext ().settings.mouse.enabled)
{
return {0, 0};
}

if (waylandDriver->viewportInFocus && waylandDriver->viewportInFocus->rendering)
return waylandDriver->viewportInFocus->mousePos;

Expand Down
2 changes: 1 addition & 1 deletion src/WallpaperEngine/Input/Drivers/CWaylandMouseInput.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace WallpaperEngine::Input::Drivers
/**
* The virtual pointer's position
*/
glm::dvec2 position () const override;
[[nodiscard]] glm::dvec2 position () const override;

private:
/**
Expand Down
1 change: 1 addition & 0 deletions src/WallpaperEngine/Render/Drivers/CWaylandOpenGLDriver.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

#include "WallpaperEngine/Render/Drivers/CVideoDriver.h"
#include "WallpaperEngine/Application/CApplicationContext.h"
#include "WallpaperEngine/Application/CWallpaperApplication.h"
#include "WallpaperEngine/Render/Drivers/Detectors/CWaylandFullScreenDetector.h"
#include "WallpaperEngine/Render/Drivers/Output/CWaylandOutputViewport.h"
#include "WallpaperEngine/Render/Drivers/Output/CWaylandOutput.h"
Expand Down

0 comments on commit 21c38d9

Please sign in to comment.