Commit Graph

49 Commits (a8dc933701c97e6ae82233e03196625d8507fc4a)

Author SHA1 Message Date
Pierre Ossman a8dc933701 Fix AltGr for a few more keys in IE and Edge
Some keys apparently send 'Unidentified' rather than an unshifted value.
Make sure those are also handled. Examples are \ and | on a Swedish
keyboard.
4 years ago
Pierre Ossman 62fca18cb9 Revert iOS keyup workaround
It seems Apple has fixed their buggy keyup events, so remove the
workaround and allow keys to be kept pressed again.

This is a revert of 9e99ce126ca8f6f350fa015c0e58d35103c62f7e.
4 years ago
Pierre Ossman dc3ddc8efc Handle broken numpad delete key in Chrome 4 years ago
Pierre Ossman e497b53d09 Explain why Clear maps to KP_Begin 4 years ago
Pierre Ossman 7dc51fa7a5 Try to handle Meta key properly
The standards have unfortunatly caused some confusion between the Windows
key and the original Meta key. Try to handle the common case sanely at least.
4 years ago
Samuel Mannehed 6067290169 Rename document.capturedElem to captureElement
To better fit most naming.
4 years ago
Samuel Mannehed 996895268e Hide the emulated cursor when target is null
Makes it easier to understand what happens when a real element isn't
passed as a target to updateVisibility(). Also makes the code more
robust to future changes.

Co-authored-by: Alex Tanskanen <aleta@cendio.se>
Co-authored-by: Niko Lehto <nikle@cendio.se>
4 years ago
Samuel Mannehed fb14c2dec9 Fix disappearing cursor after click
In the cursor emulation when deciding if the cursor should be hidden -
Instead of checking what's under the cursor, we check the element that
has capture.

This introduced another bug in the cursor emulation. The cursor did not
always disappear properly when using our cursor emulation together with
our setCapture polyfill. More specifically, we saw a problem when a
capture ended on an element without cursor emulation.

We solved this by introducing another visibility check on a timer in
the cursor emulation. However this led to yet another problem where
this timer conflicted with the timer in the setCapture polyfill.

We removed the timeout in the setCapture polyfill and created a
variable to make sure that all the events remaining in the queue can be
completed.

Co-authored-by: Alex Tanskanen <aleta@cendio.se>
Co-authored-by: Niko Lehto <nikle@cendio.se>
4 years ago
Samuel Mannehed 83d5e5bffd Check next elem at mouseleave in cursor emulation
It's not obvious that we want to hide the cursor when we get a leave,
it depends on the element that we're leaving to. This makes the code
more robust.

Co-authored-by: Alex Tanskanen <aleta@cendio.se>
Co-authored-by: Niko Lehto <nikle@cendio.se>
4 years ago
Samuel Mannehed 19dfb7901c Rename variables in setCapture proxy
The names of many variables were too similar. To make the code easier
to follow we renamed:

* _captureElem to _capturedElem
* _captureElemChanged() to _capturedElemChanged()
* captureElem to proxyElem
* elem to target

Co-authored-by: Alex Tanskanen <aleta@cendio.se>
Co-authored-by: Niko Lehto <nikle@cendio.se>
4 years ago
Samuel Mannehed 0dcb896920 Update copyright to 2019 for modified files 4 years ago
Samuel Mannehed d88aefba4e Code comments for how the receieve queue works 4 years ago
Samuel Mannehed b0c54f6b24 Clarify why we ENABLE_COPYWITHIN is false 4 years ago
Samuel Mannehed 6342a117ff Clarify comments for broken alt in FF on Windows 4 years ago
Niko Lehto 766fc43855 Add support for VMware cursor encoding
Supports both classic cursor type and alpha cursor type. In classic
mode the server can send 'inverted' pixels for the cursor, our code
does not support this but handles these pixels as opaque black.

Co-authored-by: Samuel Mannehed <samuel@cendio.se>
4 years ago
Niko Lehto 19f0803636 Fix url cursor detection on Edge
_supportCursorURIs was set to true even when Edge didn't support
URIs because the fallback value "default" was used.
4 years ago
Niko Lehto 8c43287afb Add support for DesktopName extension
This extension allows session name to be changed during runtime.
4 years ago
Pierre Ossman c211f31113 Remove pointless Display.clear()
It served no meaningful purpose and it had bugs. So let's remove it
rather than try to fix it.
4 years ago
Pierre Ossman 4cc536636a Remove unused Display.logo attribute 4 years ago
Pierre Ossman 734bdd3746 Deprecate showDotCursor option for RFB constructor
It is not relevant for the connection stage so it should not have
been a constructor argument to begin with. Ship with a warning for
a release before we remove it.
4 years ago
Pierre Ossman 8218a0cb2a Make sure showDotCursor can be modified before connecting
The cursor object is only attached to our canvas whilst connecting,
so we need to make sure we don't try to update anything when were
not connected or we'll get a crash.
4 years ago
Jesper Alf Dam b0896c8859 When compacting the receive buffer don't copy unused buffer space
When compacting the receive buffer, we should only copy the bytes
between _rQi and _rQlen (the index of the first unread byte, and the
next write position).

Previously, we copied everything for _rQi up untill the end of the
buffer.
4 years ago
Jesper Alf Dam 09de4b8349 Don't compact the receive buffer unless we've actually run out of space
Previously, we would compact the buffer (moving unread data to the
start of the buffer) as follows:

- after processing a message, if there are zero unread bytes, just reset
  the indices for first and last unread byte to zero
- else, if at least 1/8th of the buffer is used, copy remaining data to the beginning of the buffer

The second option is never actually necessary, as before inserting new data
into the array, we already check if there's enough free space, and
compact the buffer first if necessary. So we've been doing a lot of
copies that weren't actually needed. Let's not do that any more.
4 years ago
Jesper Alf Dam d4747a8c80 Avoid recursion in Alt check on Firefox
The Firefox workaround which checks for missing Alt key events may
synthesise new KeyboardEvents. On these events, checkAlt should not be
recursively triggered. Otherwise, we get "too much recursion" errors
whenever the Alt key is pressed.
4 years ago
Samuel Mannehed 8b859f4598 Remove the default value of wsProtocols
Using the 'binary' protocol by default is very non-standard.
4 years ago
Shira Maximov 8c5b5f17eb Add support in websocket sub-protocols 4 years ago
Pierre Ossman 4c635f65d3 Remove server pixel format warnings
These are harmless and really only for debugging. So remove them
as they tend to trick people in to thinking something is wrong.
We already print the entire server pixel format earlier anyway in
case we need the details.
4 years ago
Samuel Mannehed 12565dc4ac Allow autoscale() with zero height or width
Commit 6e7e6f9 stopped the function from running if width or height was
zero, this commit reverts that change. This commit also makes the
resulting canvas 0x0 if autoscale is called with zero. By adding this
special case we can avoid division by zero in the calculations.
4 years ago
Samuel Mannehed 79ab05192b Add check for bad values for Display.autoscale() 4 years ago
Juanjo Diaz c6c278f9d5 Replace unnecessary function supportsCursorURIs by a constant variable 4 years ago
Juanjo Diaz 37c17ddbf9 Move support check from display to browser 4 years ago
Juanjo Diaz 075eed5cbb Convert DES into a class 4 years ago
Juanjo Diaz 7b7295fd4e Use default argument for base64 4 years ago
Juanjo Diaz 5964156a6f Remove unnecessary context from eventtarget 4 years ago
Juanjo Diaz 1ff792cf4b Remove unnecessary constructor parameter from Cursor 4 years ago
Juanjo Diaz 3043216b63 Remove intermediate variable from mouse 4 years ago
Pierre Ossman 499b251716 Remove error handling in clientCutText()
It is not necessary as Websock.flush() is guaranteed to succeed and
give us some space. It also remove the call to _fail(), which was
invalid at this place as clientCutText() is not a method on RFB.
4 years ago
Pierre Ossman d20f751441 Throw correct Error object
We've already defined the name Error as a logging function, so we
need to be more explicit when we want to refer to the exception
class.
4 years ago
Pierre Ossman ee2423ed2b Clean up RFB._rfb_auth_schema assignment 4 years ago
Pierre Ossman ce6d66f030 Fix security failure reason handling of slow data
Things would break if the security result and security reason did
not arrive in the same WebSocket message.
4 years ago
Pierre Ossman 41e6fedba6 Fix version handshake to handle slow data 4 years ago
Pierre Ossman 642a67f76f Use arrow function to avoid bind 4 years ago
Pierre Ossman d7198cbe5d Consume data properly in Hextile decoder
We accidentally removed the code updating the data index in 8a189a6,
resulting in the decoder newer consuming any data. So the data would
be parsed as the next rect, causing weird errors.
4 years ago
Dmitry Maksyoma 9084409a20 Merge branch 'users' into packages_and_multiuser_passwd 4 years ago
matt 2813e7fe09 Fixes to webcode for Kasm CDI 4 years ago
matt 28d19cd556 Disable VNC password, fix bug when running inside Kasm VDI 5 years ago
kasmtech 88a9bed022 UI mods to display stats 5 years ago
Lauri Kasanen d5bdef121a Add support for bottleneck stats 5 years ago
matt 408c005d3e Initial commit 5 years ago