Wez Furlong
67bdc06d73
macos: speculative fix to drag-n-drop crash
...
refs: https://github.com/wez/wezterm/issues/4771
2024-02-10 17:32:28 -07:00
Wez Furlong
2fee694bcc
wayland: avoid panic when closing/destroying window
...
refs: https://github.com/wez/wezterm/issues/4983
2024-02-08 05:01:55 -07:00
Wez Furlong
4f123a461b
macos (mostly): try harder to get initial dpi
...
There are a number of open issues that relate to getting the dpi
wrong when spawning a window. In theory it shouldn't matter because
we will immediately realize the difference and synthesize the correct
information, but evidence shows this isn't quite true.
What this commit does is:
* Override Connection::default_dpi() on macOS to return the
effective_dpi from the active screen instead of the default
non-retina dpi
* Adjust the Config::initial_size() method to accept an optional
cell pixel dimension
* Add a helper function to wezterm-gui to compute the cell pixel
dimensions given the config and the (usually default) dpi, and
feed that through to Config::initial_size
* in the macos window impl, scale the computed geometry based on
the ratio of the Connection::default_dpi and the default non-retina
dpi.
This helps to avoid needing to do a fixup in the
https://github.com/wez/wezterm/issues/4966 case, and may help with
the various other macos quirky issues.
refs: https://github.com/wez/wezterm/issues/2958
refs: https://github.com/wez/wezterm/issues/3575
refs: https://github.com/wez/wezterm/issues/3900
refs: https://github.com/wez/wezterm/issues/4250
refs: https://github.com/wez/wezterm/issues/4285
refs: https://github.com/wez/wezterm/issues/4447
refs: https://github.com/wez/wezterm/issues/4851
refs: https://github.com/wez/wezterm/issues/4966
2024-02-06 22:57:05 -07:00
Wez Furlong
36ff6d5f44
deps: update glium
2024-02-06 16:52:02 -07:00
Jeffrey Knockel
b03b833a4d
windows: account for dpi in window size
...
On Windows, to set a window's size, in addition to the size of the
client area, the width and height of the window's "frame" must be
included in the dimensions passed to SetWindowPos() which burdens us in
needing to know the exact size of the window frame so that we can
properly account for its dimensions. Previously, we used
AdjustWindowRect() to account for the frame's dimensions, but the size
of a window's frame can change depending on the DPI of the monitor on
which it is placed, and it appears that neither AdjustWindowRect() nor
AdjustWindowRectEx() account for this automatically. Instead, we use
AdjustWindowRectExForDpi(), passing in the window's DPI, so that we
properly calculate the window's size.
2024-02-04 21:32:33 -07:00
Jeffrey Knockel
a0974a2537
Implement SetInnerSizeCompleted events
...
These are used to signal, after a set_inner_size() call, at what point
we can expect any and all of its related Resized events to have already
been dispatched. SetInnerSizeCompleted events are currently used to fix
a race condition in rescaling the terminal in which the number of cells
of the terminal (e.g., 80x24) can change when quickly rescaling the
terminal.
2024-02-04 09:40:54 -07:00
Wez Furlong
38dbd8db5e
wayland: hook up some resize handling
...
refs: https://github.com/wez/wezterm/pull/4906
2024-02-03 23:18:55 -07:00
Wez Furlong
32f5d1ca08
wayland: avoid panic w/ resize of hidden frame, part 2
...
refs: https://github.com/wez/wezterm/issues/4948
2024-02-03 23:10:26 -07:00
Wez Furlong
2ce302c89c
wayland: don't try to resize a hidden frame
...
it causes a panic.
refs: https://github.com/wez/wezterm/issues/4948
2024-02-03 20:06:55 -07:00
Wez Furlong
050aa078d7
wayland: improve error check
...
This avoids a nasty panic, and shows some more context,
but doesn't really fix anything.
refs: https://github.com/wez/wezterm/issues/4948
2024-02-03 20:00:22 -07:00
Timmy Xiao
f8b86cce22
Don't hardcode egl sizes
2024-02-03 14:56:12 -07:00
Timmy Xiao
6b73db40e9
Resize window frame correctly
2024-02-03 14:56:12 -07:00
Timmy Xiao
4b0fba40f7
Implement working frame actions
2024-02-03 14:56:11 -07:00
Timmy Xiao
0c034ccdec
Initial window frame
2024-02-03 14:56:11 -07:00
Timmy Xiao
da5b519340
Make IME support optional since not all compositors support it
2024-02-03 14:56:11 -07:00
Timmy Xiao
daf58199aa
Handle crash when using software/opengl due to active_surface_id
2024-02-03 14:56:11 -07:00
Timmy Xiao
125e89c3ae
Implement primary selection support
2024-02-03 14:56:11 -07:00
Timmy Xiao
561d360e0a
Fix making wlr-output-management-unstable optional
2024-02-03 14:56:11 -07:00
Timmy Xiao
ea149a9686
Implement wlr-output-management-unstable
2024-02-03 14:56:11 -07:00
Timmy Xiao
d6dae4fc90
Implement shutdown for ime
2024-02-03 14:56:11 -07:00
Timmy Xiao
5b2f960438
Implement inputhandler
2024-02-03 14:56:10 -07:00
Timmy Xiao
a3eb8a8bd4
Start IME support
2024-02-03 14:56:10 -07:00
Timmy Xiao
62949df2c8
Ignore drag source handlers (we don't drag from wezterm)
2024-02-03 14:56:10 -07:00
Timmy Xiao
21a6b0636a
Implement dispatch_dropped_files
2024-02-03 14:56:10 -07:00
Timmy Xiao
5d6e7c4f98
Implement paste
2024-02-03 14:56:10 -07:00
Timmy Xiao
41eeddb7a1
Implement copying, pasting does not work
2024-02-03 14:56:10 -07:00
Timmy Xiao
30727e96ac
Theme the pointer
2024-02-03 14:56:10 -07:00
Timmy Xiao
60066034aa
Implement forgotten PointerEventKind::Release, mouse features seem to work now
2024-02-03 14:56:10 -07:00
Timmy Xiao
6807d7c18f
Mouse seems to do something, but it is incorrect
2024-02-03 14:56:10 -07:00
Timmy Xiao
dfa1e35138
Starting pointer implementation
2024-02-03 14:56:09 -07:00
Timmy Xiao
d5f781a2e0
Nuke pointer
2024-02-03 14:56:09 -07:00
Timmy Xiao
fb35683e0a
Don't use xkbcommon feature in smithay so we can use modifiers
2024-02-03 14:56:08 -07:00
Timmy Xiao
cfbc9d716c
Use raw_code for process_wayland_key instead of keysym
2024-02-03 14:55:32 -07:00
Timmy Xiao
d443afa380
Ignore cursor handling for now
2024-02-03 14:55:32 -07:00
Timmy Xiao
25c123af75
Implement adding keymap
2024-02-03 14:55:31 -07:00
Timmy Xiao
136a043008
Implement enter + emit_focus -> need to impl keymap
2024-02-03 14:55:31 -07:00
Timmy Xiao
c66b1855fc
Implement pressing a key
2024-02-03 14:55:29 -07:00
Timmy Xiao
8382c370f1
Refactor windows to WaylandState
2024-02-03 14:54:46 -07:00
Timmy Xiao
2ed805af6b
Wayland refactor: Put handlers for windows in windows.rs, and separate WaylandState
2024-02-03 14:54:46 -07:00
Timmy Xiao
34bb2bb61d
Store OutputState, CompositorState, XdgShell in WaylandState instead of binding them during new_window
2024-02-03 14:54:46 -07:00
Timmy Xiao
57d9320000
Handle window close -> no more crashes
2024-02-03 14:54:46 -07:00
Timmy Xiao
62b2f32e20
Handle scale factor changes: do nothing
2024-02-03 14:54:45 -07:00
Timmy Xiao
ad55daebc3
Implement getting screens
2024-02-03 14:54:45 -07:00
Timmy Xiao
21136d2647
Fix delegate dispatch for SurfaceUserData
...
Without this change, the event dispatch would go on forever and cause a
stack overflow
2024-02-03 14:54:45 -07:00
Timmy Xiao
b01e32b606
Implement most of dispatch pending_event
2024-02-03 14:54:45 -07:00
Timmy Xiao
3496aff490
Need to look into window frames
2024-02-03 14:54:45 -07:00
Timmy Xiao
4ce398bc19
A window renders now
2024-02-03 14:54:45 -07:00
Timmy Xiao
9e14a4c929
Implement do_paint -> renders window and then panics at frame()
2024-02-03 14:54:45 -07:00
Timmy Xiao
92e83b1ac5
Handle panics after handling window configuration
2024-02-03 14:54:45 -07:00
Timmy Xiao
0348a584c7
Implement handling window configuration
2024-02-03 14:54:45 -07:00