Commit graph

66 commits

Author SHA1 Message Date
Robin Gareus
9e164bf0cf
Further reduce debug output 2025-01-23 03:55:09 +01:00
Robin Gareus
631cda9fc8
Fix mac/Quartz drawRect full exposure
When full-draw is set, use the `rect` passed as argument
to `drawRect` and ignore `drawn_rects` invalidation.

This may fix some missing redraws when switching tabs.
2025-01-17 18:26:50 +01:00
Robin Gareus
4e34c0a0e3
Remove redundant gdk_region_destroy 2025-01-17 18:26:50 +01:00
Robin Gareus
462c5ad400
Windows multitouch fixes and notes
Properly special case first single touch; fall
back to allow windows to emulate mouse events for it.
Yet let gdk handle any multi-touch events, not allowing gestures.
2025-01-16 18:46:27 +01:00
Robin Gareus
90755045f5
Windows multitouch tweaks
* Fix special case of first single touch. While another touch
is active, any new touch must not get the ID of the (ignored)
first touch.

* reset "last-touch" coordinate on touch-begin.
Previously it was possible that the first motion event was
ignored.

NB: This does not fix missing events when the first touch
coincides with any other finger (gesture?).
2025-01-15 03:32:17 +01:00
Robin Gareus
91fe10165e Linux/X11 grab window when emulating touch button events
The first touch moves the mouse cursor, but X motion events
for the first touch are only sent after a XGrabPointer.
2025-01-15 02:06:45 +01:00
luzpaz
f4562a9b4c
fix various typos throughout codebase
Found via `codespell -q 3 -S "*.pdf,*.po,./.git,*.tosc,./waf,./share/patchfiles,./libs,./msvc_extra_headers,./share/web_surfaces,*.patch" -L acount,addin,ane,ba,buss,busses,caf,capela,devine,disconnectin,discreet,doubleclick,envolution,filetest,fo,ghandi,homs,hsi,layed,maschine,mis,nd,ontop,pass-thru,removeable,retrn,ro,scrollin,sectionin,seh,siz,sord,sur,te,trough,ue,wth`
2025-01-12 21:08:42 +01:00
John Emmas
7a5fe4c5a1 ytk: some #defines need to be different when building with MSVC 2024-12-02 10:55:02 +00:00
Paul Davis
0132a0b8ad amend GdkQuartzView:drawRect to be able to show both the exposed and "leftover" areas
To activate, run a debug build with ARDOUR_SHOW_QUARTZ_INVALIDATION set in the environment
2024-11-26 19:02:42 -07:00
Paul Davis
4fbdf0d680 macOS: catch spurious full redraw calls to NSView:drawRect and act appropriately 2024-11-21 14:07:31 -07:00
Robin Gareus
efbc8b4390
Turn touchscreen debug prints into gdk-debug messages 2024-11-07 06:13:12 +01:00
John Emmas
3933fc2db7 Oops, missed one... 2024-11-03 13:33:57 +00:00
John Emmas
44068a63f5 Guard some pragmas which aren't understood by MSVC 2024-11-03 11:50:44 +00:00
Robin Gareus
37b0910d80
Windows Multitouch: disable gestures
Gestures may prevent a 2nd touch from being registered as
such (and instead report a zoom/pinch gesture).

At least that is my best guess, why Nathan needs 3 fingers
to move 2 Faders :)
2024-11-02 04:54:28 +01:00
Robin Gareus
0e4dcb231f
Amend previous commit (fix Windows builds) 2024-11-02 00:12:53 +01:00
Robin Gareus
e63693fb1c
Fix Windows debug builds
There's no such thing as GDK_TOUCH_CANCEL. The idea was dropped.
2024-11-01 22:21:25 +01:00
Robin Gareus
c88d370136
Implement Windows multitouch support 2024-10-31 02:02:20 +01:00
Robin Gareus
952ec57a26 Special case first touch-event: grab and emulate mouse button 2024-10-30 19:19:30 +01:00
Robin Gareus
23d5dcd080 Fix touch event propagation (custom grab)
See also 79dae5f2b4
2024-10-30 19:13:24 +01:00
Robin Gareus
8f32862e58
Humble beginnings of implementing Touch API for YDK/Windows 2024-10-26 14:55:35 +02:00
Robin Gareus
79dae5f2b4
Implement multitouch grab 2024-10-24 23:33:31 +02:00
Robin Gareus
5cf392b17a
Implement YDK Touch API for Linux/X11 2024-10-24 23:33:31 +02:00
Robin Gareus
89da2f2c87
Define YDK/YTKMM Touch Event API 2024-10-24 23:33:28 +02:00
Mads Kiilerich
e520cf6bac
wscript: Actually invoke autowaf.build_i18n_pot in i18n_pot_func 2024-10-22 00:37:39 +02:00
Mads Kiilerich
8e2a9dfd91
wscript: Fix i18n names for tk 2024-10-22 00:37:39 +02:00
Mads Kiilerich
48fcb30608 wscript: fix whitespace formatting
No tabs and no trailing spaces.
2024-10-20 19:52:14 -06:00
Paul Davis
1f70d54989 avoid call of a null function pointer 2024-09-13 08:24:04 -06:00
Paul Davis
79e78394c2 track modal window show/hide, not realize/finalize 2024-09-13 16:02:59 +02:00
Robin Gareus
267cddfb05
Fix stuck insensitive macOS main menu
Popup Dialog Windows never unset the modal flag.
e.g. Session > Save Snapshot & switch.

Furthermore a 2nd dialog was able to get the menu stuck
forever (e.g. Snapshot & Switch .. -> Replace existing?
2024-09-05 18:27:44 +02:00
Robin Gareus
3acc8c76ca
Handle Filechooser Location entry
In order for the Filechooser Location widget to work two
things need to be setup, which only the FileChooserDialog
does:
 * subscribe to Widget's "response-requested" signal
 * call should_respond () hook from top-level window's
   default handler.

The Location Entry emits "activates-default". In case of
the Dialog, that calls the dialogs response callback,
which then calls ` _gtk_file_chooser_embed_should_respond`.

That handles changes made by the user to the location entry.

-=-

Gtk::FileChooserWidget does not handle this, "response-requested"
signal is not exposed, nor is _gtk_file_chooser_embed_should_respond
available outside Gtk.

This change at least selects the file in the treeview, which
allows further handling, without interfering with FileChooserDialog's
behavior.
2024-09-04 22:29:24 +02:00
Paul Davis
b544ac832c move gdk global for modal notification to be with other gdk globals 2024-08-19 15:15:45 -06:00
Paul Davis
0901b239c1 fix spelling error 2024-08-19 15:15:45 -06:00
Paul Davis
4ad332ae50 fix initial commit 2024-08-19 15:15:45 -06:00
Paul Davis
221fd82d59 initial infrastructure for handling modal dialogs on macOS 2024-08-19 15:15:45 -06:00
Robin Gareus
76b25163bd
Fix YTK filemanager recently-used (Windows, macOS)
g_get_user_data_dir() folder does not exist on macOS
compare to gtkfilechoosersettings.c which creates
g_get_user_config_dir().
2024-08-06 20:51:56 +02:00
Paul Davis
181ba4db54 ytk: do not show filter combo box in filechooser if there is only 1 filter 2024-07-22 15:36:45 -06:00
Robin Gareus
2cdfdc9212 Prevent minimizing Dialog Windows on macOS
This works around an issue with some embedded plugin windows not being
properly restored when the window is restored after being minimized. It
also prevents zooming (full-screen) display of dialog windows.

Also recent macOS allows to maximize Windows even if they are not
supposed to be resizable (also causing issues with some plugins).
2024-07-18 17:57:52 +02:00
Paul Davis
f8f6c89136 fix a likely logic error in GtkMenu handling of enter events
On macOS popping up a menu with a position function that leads the menu to be
under the mouse pointer generates the same initial set of enter events as on
linux, but this is then followed  by some leave events and then a repeat of the
same set of enter events.

this exposes what appears to be a logic error in gtk_menu_enter_notify().

Nonlinear enter events (i.e. where the menu pops up under the mouse, so the
mouse was never actually moved into the menu's window) should not cause a reset
of priv->seen_item_enter. This value, when true, is used to force the next
received button release event to be handle as an menu activation event. This
should only happen when the mouse has actually been moved by the user into the
menu (as already indicated in existing comments). The value has this effect by,
on the next enter event for a menu item, if already set, forcing
menu->activate_time to zero, which in turn will cause menu activation on button
up/release.

This bug doesn't appear on Linux (or Windows) because the event sequence
associated with a menu popup is different. The lack of another set of enter
events means that menu->activate_time is never reset, and so the behavior is as
expected.

This change makes the setting of priv->seen_item_enter be idempotent with
respect to non-linear enter events, which I believe is the intended behavior.
2024-07-15 11:09:59 -06:00
Robin Gareus
e317d75b17
Fix YTK doxygen errors 2024-05-27 22:21:29 +02:00
Robin Gareus
fd96694a21
Fix various doxgen errors in YTK
This is about half of the reported errors, then my patience
ran out. More later
2024-05-27 00:43:04 +02:00
Robin Gareus
5a52b66dfa
Remove unsupported xml/html tag <inlinegraphic> 2024-05-26 23:45:31 +02:00
Robin Gareus
76beb21862
Remove non-standard @newin doxygen token
We are not interested in which version a given GTK method
was added.
2024-05-26 23:39:04 +02:00
Robin Gareus
4b8b5acfc4
Fix builds with gcc-14 lstat (#9703 PR #893)
from stat(2)
```
lstat():
    /* glibc 2.19 and earlier */ _BSD_SOURCE
        || /* Since glibc 2.20 */ _DEFAULT_SOURCE
        || _XOPEN_SOURCE >= 500
        || /* Since glibc 2.10: */ _POSIX_C_SOURCE >= 200112L

```
2024-05-07 00:17:56 +02:00
Paul Davis
894e6d27a4 NOOP: whitespace cleanup 2024-04-19 10:43:10 -06:00
Paul Davis
c96e12ba58 expand null/destroyed tests for gdk objects in NSView methods 2024-04-19 10:42:59 -06:00
Robin Gareus
e64a071e39
(YDK) amend previous commit, call parent method 2024-04-19 16:46:49 +02:00
Robin Gareus
08e394f681
(YDK) possible fix for Catalina event loop crashes
```
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libydk.dylib 0x0000000110d8942d -[GdkQuartzView setNeedsDisplay:] + 93
1 com.apple.AppKit 0x00007fff34af6848 -[NSView(NSViewContentStyle) _recursivelyInvalidateCachedContentStyle] + 120
2 com.apple.AppKit 0x00007fff34af60fb -[NSView _setSuperview:] + 521
3 com.apple.AppKit 0x00007fff34b200a6 -[NSView removeFromSuperview] + 140
4 com.apple.AppKit 0x00007fff34ba882f -[NSView removeFromSuperviewWithoutNeedingDisplay] + 36
5 com.apple.AppKit 0x00007fff34b27168 -[NSView _finalize] + 977
6 com.apple.AppKit 0x00007fff34b26c0c -[NSView dealloc] + 121
7 com.apple.AppKit 0x00007fff34e30db4 -[NSFrameView dealloc] + 119
8 com.apple.AppKit 0x00007fff34e30d36 -[NSTitledFrame dealloc] + 62
9 com.apple.AppKit 0x00007fff34e30ce9 -[NSThemeFrame dealloc] + 603
10 com.apple.Foundation 0x00007fff39ed5992 NSKVODeallocate + 172
11 com.apple.AppKit 0x00007fff34d85884 -[NSWindow dealloc] + 1083
12 com.apple.AppKit 0x00007fff34d85442 -[NSWindow _dealloc] + 76
13 libobjc.A.dylib 0x00007fff6f6f3054 AutoreleasePoolPage::releaseUntil(objc_object**) + 134
14 libobjc.A.dylib 0x00007fff6f6d7dba objc_autoreleasePoolPop + 175
15 com.apple.CoreFoundation 0x00007fff377c9cb5 _CFAutoreleasePoolPop + 22
16 com.apple.Foundation 0x00007fff39e7d04e -[NSAutoreleasePool drain] + 126
17 libydk.dylib 0x0000000110d8ef29 gdk_event_prepare + 73
18 libglib-2.0.0.dylib 0x00000001110ded45 g_main_context_prepare + 533
19 libglib-2.0.0.dylib 0x00000001110df800 g_main_context_iterate + 128
20 libglib-2.0.0.dylib 0x00000001110dfcc2 g_main_loop_run + 210
21 libytk.dylib 0x0000000110a4f11f gtk_main + 191
22 libgtkmm2ext.dylib 0x00000001104cef1e Gtkmm2ext::UI::run(Receiver&) + 318
23 com.harrisonconsoles.Mixbus10 0x000000010dc6fb9c main + 2652
```
2024-04-19 15:38:12 +02:00
Robin Gareus
fe7fd146aa macOS: fix crash when trying to enter fullscreen while already in fullscreen
YDK2 uses SetSystemUIMode() for fullscreen. This also uses space
otherwise reserved for the menu bar at the top, and is apparently
preferable for Ardour's UI.

However when a user manually enters fullscreen using the window
title-bar's green button (NSWindow toggleFullScreen). YDK will crash
when the user then also tries to use YDK's fullscreen mode:

```
NSWindowStyleMaskFullScreen cleared on a window outside of a full screen transition.
called from
  [NSWindow setStyleMask:]
  gdk_window_set_decorations
  gdk_window_fullscreen
```

Ideally we'd set NSApp presentation flags so that the toplevel window
would allow one to zoom (maximize), but not to enter fullscreen. Like it
used to be on OSX. It is unclear how to achieve this on macOS for
resizable windows, short of marking the top-level window a dialog or
utility window.
2024-04-10 20:41:49 +02:00
Robin Gareus
ecd22e9aa8 Remove call to deprecated userSpaceScaleFactor
userSpaceScaleFactor is a missing symbol on some recent versions of macOS.
2024-04-09 06:06:58 +02:00
Robin Gareus
2e991b0067
Fix thinko in bda7041643 2024-04-04 17:32:50 +02:00