showCursorDot Arrow Feature Request
GFoxPM opened this issue · comments
spice:showCursorDot replaced with spice:showCursor
Also added spice:dotCursor, which switches the cursor to a dot or arrow
path
diff --git a/client/src/app.c b/client/src/app.c
index f57f0d11..264f2e0f 100644
--- a/client/src/app.c
+++ b/client/src/app.c
@@ -120,7 +120,7 @@ void app_handleFocusEvent(bool focused)
g_state.escapeActive = false;
- if (!g_params.showCursorDot)
+ if (!g_params.showCursor)
g_state.ds->setPointer(LG_POINTER_NONE);
if (g_params.minimizeOnFocusLoss)
diff --git a/client/src/config.c b/client/src/config.c
index 9f415165..61650d7e 100644
--- a/client/src/config.c
+++ b/client/src/config.c
@@ -480,11 +480,18 @@ static struct Option options[] =
},
{
.module = "spice",
- .name = "showCursorDot",
+ .name = "dotCursor",
.description = "Use a \"dot\" cursor when the window does not have focus",
.type = OPTION_TYPE_BOOL,
.value.x_bool = true
},
+ {
+ .module = "spice",
+ .name = "showCursor",
+ .description = "Show cursor when the window does not have focus",
+ .type = OPTION_TYPE_BOOL,
+ .value.x_bool = true
+ },
// audio options
{
@@ -704,7 +711,8 @@ bool config_load(int argc, char * argv[])
g_params.scaleMouseInput = option_get_bool("spice", "scaleCursor");
g_params.captureOnStart = option_get_bool("spice", "captureOnStart");
g_params.alwaysShowCursor = option_get_bool("spice", "alwaysShowCursor");
- g_params.showCursorDot = option_get_bool("spice", "showCursorDot");
+ g_params.dotCursor = option_get_bool("spice", "dotCursor");
+ g_params.showCursor = option_get_bool("spice", "showCursor");
}
g_params.audioPeriodSize = option_get_int("audio", "periodSize");
diff --git a/client/src/core.c b/client/src/core.c
index 8a6ccdd7..6db74586 100644
--- a/client/src/core.c
+++ b/client/src/core.c
@@ -83,7 +83,7 @@ void core_invalidatePointer(bool detectInView)
else
{
if (g_params.hideMouse)
- g_state.ds->setPointer(LG_POINTER_SQUARE);
+ g_state.ds->setPointer(g_params.dotCursor ? LG_POINTER_SQUARE : LG_POINTER_ARROW);
if (warpSupport != LG_DS_WARP_NONE)
g_state.ds->ungrabPointer();
@@ -121,7 +121,7 @@ void core_setGrabQuiet(bool enable)
{
/* we always do this so that at init the cursor is in the right state */
if (g_params.captureInputOnly && g_params.hideMouse)
- g_state.ds->setPointer(enable ? LG_POINTER_NONE : LG_POINTER_SQUARE);
+ g_state.ds->setPointer(enable ? LG_POINTER_NONE : (g_params.dotCursor ? LG_POINTER_SQUARE : LG_POINTER_ARROW));
if (g_cursor.grab == enable)
return;
diff --git a/client/src/main.c b/client/src/main.c
index a8d6e486..007adebb 100644
--- a/client/src/main.c
+++ b/client/src/main.c
@@ -96,10 +96,10 @@ static void lgInit(void)
g_cursor.guest.valid = false;
// if spice is not in use, hide the local cursor
- if ((!g_params.useSpiceInput && g_params.hideMouse) || !g_params.showCursorDot)
+ if ((!g_params.useSpiceInput && g_params.hideMouse) || !g_params.showCursor)
g_state.ds->setPointer(LG_POINTER_NONE);
else
- g_state.ds->setPointer(LG_POINTER_SQUARE);
+ g_state.ds->setPointer(g_params.dotCursor ? LG_POINTER_SQUARE : LG_POINTER_ARROW);
}
static bool fpsTimerFn(void * unused)
diff --git a/client/src/main.h b/client/src/main.h
index 3f9b6a2f..b516e1ce 100644
--- a/client/src/main.h
+++ b/client/src/main.h
@@ -214,7 +214,8 @@ struct AppParams
bool rawMouse;
bool autoCapture;
bool captureInputOnly;
- bool showCursorDot;
+ bool dotCursor;
+ bool showCursor;
int audioPeriodSize;
int audioBufferLatency;
diff --git a/doc/usage.rst b/doc/usage.rst
index 658fc401..c5d64031 100644
--- a/doc/usage.rst
+++ b/doc/usage.rst
@@ -296,7 +296,8 @@ All command line options
| spice:scaleCursor | -j | yes | Scale cursor input position to screen size when up/down scaled |
| spice:captureOnStart | | no | Capture mouse and keyboard on start |
| spice:alwaysShowCursor | | no | Always show host cursor |
- | spice:showCursorDot | | yes | Use a "dot" cursor when the window does not have focus |
+ | spice:dotCursor | | yes | Use a "dot" cursor when the window does not have focus |
+ | spice:showCursor | | yes | Show cursor when the window does not have focus |
+------------------------+-------+-----------+---------------------------------------------------------------------+
+------------------------+-------+--------+-------------------------------------------------------------------------------+
The purpose of the dot
cursor is to show that the mouse is not active. If you wish the cursor to always show why not just use spice:alwaysShowCursor
?
As this extra setting will just cause confusion to the end user, and I can't figure out what it's usefulness would be, I am not inclined to accept this.
Because spice:alwaysShowCursor does not enable the cursor display when the LookingGlass window is not in focus.
When the spice:alwaysShowCursor option is enabled, the LookingGlass window still displays a dot.
Users have been dreaming about this additional setting for two years now)
The problem with a dot cursor is that it is difficult to find with your eyes, especially on HiDPI monitors.
You can also implement the option in your own way.
But this is a necessary option, because the user may not want to know that the LookingGlass window is not in focus.
When disabling spice:showCursorDot -- we do not see any cursor at all.
Tested on B6
- any patches provided must apply to the master branch.
- It seems you're unaware that we changed the 'dot' to an actual cursor (https://github.com/gnif/LookingGlass/blob/master/resources/no-input-cursor/32.png)
- Wayland doesn't yet load and support this new cursor, the correct fix is to add support here, not hack in a workaround.
Sorry but this is not the proper solution to this, closing.