Compare commits

..

1 Commits

Author SHA1 Message Date
Geoffrey McRae
8120f73cc6 [idd] driver: CSettings minor refactor
Some checks failed
build / client (Debug, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Debug, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:clang cxx:clang++], xdg-shell) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], libdecor) (push) Has been cancelled
build / client (Release, map[cc:gcc cxx:g++], xdg-shell) (push) Has been cancelled
build / module (push) Has been cancelled
build / host-linux (push) Has been cancelled
build / host-windows-cross (push) Has been cancelled
build / host-windows-native (push) Has been cancelled
build / idd (push) Has been cancelled
build / obs (clang) (push) Has been cancelled
build / obs (gcc) (push) Has been cancelled
build / docs (push) Has been cancelled
2025-12-01 14:35:38 +11:00
5 changed files with 23 additions and 31 deletions

View File

@@ -74,4 +74,3 @@ rs189 <35667100+rs189@users.noreply.github.com> (rs189)
Jérôme Poulin <jeromepoulin@gmail.com> (ticpu) Jérôme Poulin <jeromepoulin@gmail.com> (ticpu)
Marco Rodolfi <marco.rodolfi@tuta.io> (RodoMa92) Marco Rodolfi <marco.rodolfi@tuta.io> (RodoMa92)
Stewart Borle <stewi1014@gmail.com> (stewi1014) Stewart Borle <stewi1014@gmail.com> (stewi1014)
Jannis Lübke <business.janrupf@gmail.com> (Janrupf)

View File

@@ -32,9 +32,6 @@
#include "app.h" #include "app.h"
#include "common/debug.h" #include "common/debug.h"
const double WL_SCROLL_STEP = 15.0;
const double WL_HALF_SCROLL_STEP = WL_SCROLL_STEP / 2.0;
// Mouse-handling listeners. // Mouse-handling listeners.
static void pointerMotionHandler(void * data, struct wl_pointer * pointer, static void pointerMotionHandler(void * data, struct wl_pointer * pointer,
@@ -94,25 +91,12 @@ static void pointerAxisHandler(void * data, struct wl_pointer * pointer,
if (axis != WL_POINTER_AXIS_VERTICAL_SCROLL) if (axis != WL_POINTER_AXIS_VERTICAL_SCROLL)
return; return;
double delta = wl_fixed_to_double(value); int button = value > 0 ?
5 /* SPICE_MOUSE_BUTTON_DOWN */ :
wlWm.scrollState += delta; 4 /* SPICE_MOUSE_BUTTON_UP */;
app_handleButtonPress(button);
while (wlWm.scrollState > WL_HALF_SCROLL_STEP) app_handleButtonRelease(button);
{ app_handleWheelMotion(wl_fixed_to_double(value) / 15.0);
app_handleButtonPress(5 /* SPICE_MOUSE_BUTTON_DOWN */);
app_handleButtonRelease(5 /* SPICE_MOUSE_BUTTON_DOWN */);
wlWm.scrollState -= WL_SCROLL_STEP;
}
while (wlWm.scrollState < -WL_HALF_SCROLL_STEP)
{
app_handleButtonPress(4 /* SPICE_MOUSE_BUTTON_UP */);
app_handleButtonRelease(4 /* SPICE_MOUSE_BUTTON_UP */);
wlWm.scrollState += WL_SCROLL_STEP;
}
app_handleWheelMotion(delta / WL_SCROLL_STEP);
} }
static int mapWaylandToSpiceButton(uint32_t button) static int mapWaylandToSpiceButton(uint32_t button)

View File

@@ -114,7 +114,6 @@ struct WaylandDSState
bool configured; bool configured;
bool warpSupport; bool warpSupport;
double cursorX, cursorY; double cursorX, cursorY;
double scrollState;
#if defined(ENABLE_EGL) || defined(ENABLE_OPENGL) #if defined(ENABLE_EGL) || defined(ENABLE_OPENGL)
struct wl_egl_window * eglWindow; struct wl_egl_window * eglWindow;

View File

@@ -83,7 +83,7 @@ void CSettings::SetExtraMode(const DisplayMode& mode)
RegCloseKey(hKey); RegCloseKey(hKey);
} }
bool CSettings::GetExtraMode(DisplayMode& mode) std::wstring CSettings::ReadStringValue(const wchar_t* name, const wchar_t* default)
{ {
HKEY hKey = nullptr; HKEY hKey = nullptr;
LONG ec = RegOpenKeyExW( LONG ec = RegOpenKeyExW(
@@ -95,29 +95,38 @@ bool CSettings::GetExtraMode(DisplayMode& mode)
); );
if (ec != ERROR_SUCCESS) if (ec != ERROR_SUCCESS)
return false; return std::wstring(default);
DWORD type = 0; DWORD type = 0;
DWORD cb = 0; DWORD cb = 0;
ec = RegQueryValueExW(hKey, L"ExtraMode", nullptr, &type, nullptr, &cb); ec = RegQueryValueExW(hKey, name, nullptr, &type, nullptr, &cb);
if (ec != ERROR_SUCCESS || (type != REG_SZ && type != REG_EXPAND_SZ) || cb == 0) if (ec != ERROR_SUCCESS || (type != REG_SZ && type != REG_EXPAND_SZ) || cb == 0)
{ {
RegCloseKey(hKey); RegCloseKey(hKey);
return false; return std::wstring(default);
} }
std::vector<wchar_t> buf(cb / sizeof(wchar_t) + 1); std::vector<wchar_t> buf(cb / sizeof(wchar_t) + 1);
ec = RegQueryValueExW(hKey, L"ExtraMode", nullptr, &type, ec = RegQueryValueExW(hKey, name, nullptr, &type,
reinterpret_cast<LPBYTE>(buf.data()), &cb); reinterpret_cast<LPBYTE>(buf.data()), &cb);
RegCloseKey(hKey); RegCloseKey(hKey);
if (ec != ERROR_SUCCESS) if (ec != ERROR_SUCCESS)
return false; return std::wstring(default);
buf.back() = L'\0'; buf.back() = L'\0';
std::wstring s(buf.data()); std::wstring s(buf.data());
return ParseModeString(s, mode); return s;
}
bool CSettings::GetExtraMode(DisplayMode& mode)
{
std::wstring extraMode = ReadStringValue(L"ExtraMode", NULL);
if (extraMode.empty())
return false;
return ParseModeString(extraMode, mode);
} }
bool CSettings::ReadModesValue(std::vector<std::wstring> &out) const bool CSettings::ReadModesValue(std::vector<std::wstring> &out) const

View File

@@ -24,6 +24,7 @@ class CSettings
private: private:
DisplayModes m_displayModes; DisplayModes m_displayModes;
std::wstring ReadStringValue(const wchar_t* name, const wchar_t* default);
bool ReadModesValue(std::vector<std::wstring> &out) const; bool ReadModesValue(std::vector<std::wstring> &out) const;
bool ParseModeString(const std::wstring& in, DisplayMode& out); bool ParseModeString(const std::wstring& in, DisplayMode& out);