Commit Graph

213 Commits

Author SHA1 Message Date
Elias Naur 3944ef4b2e ui: merge package input
Event handling is as fundamental as operations, so move the input
package declarations to package ui.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-24 22:24:10 +02:00
Elias Naur 64add13d28 ui/app: (wayland) wait for xdg_shell configure event before drawing
According to the xdg_shell documentation, the xdg_surface must be
configured before use.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-24 17:28:04 +02:00
Elias Naur 736692a725 ui/app: (windows) process all events before redrawing
While here, make sure the DestroyEvent is sent after exiting the
event loop.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-23 20:49:51 +01:00
Elias Naur 5c9d35c186 ui/app,ui/app/internal/gl: work around golang.org/issue/34474
Apparently, the (*syscall.LazyProc).Call does not keep its arguments
alive across calls.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-23 20:26:52 +01:00
Elias Naur 5c87437542 ui/app: (windows) don't unregister window class
It silently fails because the Gio window is using it.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-23 19:17:14 +01:00
Elias Naur 8e41c8a0be ui/app: (windows) don't cast syscall.Handle to unsafe.Pointer
The cast is not necessary and a syscall.Handle is not a pointer.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-23 10:25:11 +02:00
Elias Naur 816f0e901f ui/app: scale touch events by surface scale
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-18 19:28:08 +02:00
Drew DeVault dcddd9a84a os_wayland: transform pointer events by scale
Fixes #37
2019-09-18 19:15:17 +02:00
Drew DeVault c5a6ca2aba ui/app/egl.go: on failure, try again without sRGB
Signed-off-by: Drew DeVault <sir@cmpwn.com>
2019-09-18 18:44:35 +02:00
Elias Naur bae2e0ecf2 ui/app: (wayland) restore discrete scrolling behaviour
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-16 15:39:31 +02:00
Elias Naur 37d5b947eb ui/app: (wayland) reset fling emulation on key press
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-13 21:13:02 +02:00
Elias Naur 2ea9fd9983 ui/app: (wayland) reset fling emulation of pointer motion
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-13 20:11:14 +02:00
Elias Naur 81f935f69b ui/app: go fmt
Sigh.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-13 19:09:05 +02:00
Elias Naur 5bdb1d9e54 ui/app: (wayland) emulate fling behaviour for touchpads
Unlike macOS, Wayland leaves it up to the client to animate the
implied fling gesture when scrolling on a touchpad.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-13 18:35:38 +02:00
Elias Naur 5eef85f5cd ui/app: note that Window.Invalidate is safe for concurrent use
Invalidate is intended to be called as a result of external events,
which might very well be from a different goroutine than the one
driving the window.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-09 14:51:55 +02:00
Elias Naur b4433da21b ui/app: (iOS) use UIView's safeAreaInsets for window insets if available
Unlike UIView's layoutMargins, safeAreaInsets only includes the space
actually taken up by system UI.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-06 13:09:59 +02:00
Elias Naur 7ad60e0878 ui/app: print sRGB flag for eglCreateWindowSurface failure
For gio#35

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-02 15:17:29 +02:00
Elias Naur 52dd762405 ui/app: (wayland) define WL_EGL_PLATFORM=1 to force EGL in Wayland mode
Including wayland-egl.h will also set WL_EGL_PLATFORM, but generic
egl code in egl_linux.go cannot do that.

For gio#35

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-02 15:13:36 +02:00
Elias Naur dc62058bce ui/app: (wayland) ensure DestroyEvent is the last event
A ToplevelClose event could end in the same batch of events as
another event, which will result in the other event being sent
after a DestroyEvent. Window assumes no event will arrive after
DestroyEvent, so ensure that property for the Wayland backend.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-09-01 14:33:33 +02:00
Elias Naur 110da804a0 ui/app: (wayland) expand comments for double server roundtrip
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-30 13:38:58 +02:00
Kenshi Kamata ea2ee1abcc ui/app: fix example code in document
Signed-off-by: Kenshi Kamata <kenshi.kamata@gmail.com>
2019-08-29 17:49:27 +02:00
Elias Naur 069bb0e7cd ui/app: merge goString implementations and add test
Fixes gio#30

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-26 21:19:58 +01:00
Elias Naur 8700a8ffc3 ui/key,ui/pointer: rename HandlerOp to InputOp
"Input" is more specific and reads better than "handler".

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-26 18:07:48 +01:00
Elias Naur a112a580a7 ui/app(internal/gpu: remove unused parameters
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-25 23:58:19 +01:00
Daniel Martí 2542c55e9d all: fix some issues spotted by static analysis
First, vet was upset by two incorrect fmt verbs. One was an extra %x,
when there was just one argument, so remove it. Another was a %p with a
non-pointer. It's a struct, so for now simply use %#v.

Second, staticcheck found some unused or unnecessary bits of code;
remove the obvious ones.

Finally, staticcheck also complained about some error strings which were
capitalized or had periods. Adjust those, which also makes all error
messages more consistent.

Signed-off-by: Daniel Martí <mvdan@mvdan.cc>
2019-08-25 22:41:05 +01:00
Elias Naur c3f30188a5 all: delete unused variables
Found by Daniel Martí.

Fixes gio#24

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-24 18:25:37 +01:00
Elias Naur 9520a9278f ui/app/internal/gpu: set the default material to black
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-22 11:25:11 +02:00
Elias Naur 6a7e38eb32 ui/app: go fmt
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-21 14:59:35 +02:00
Elias Naur bff8b64e5a ui/app: replace WindowOptions with WindowOption
Thanks to Larry Clapp for noticing the opportunity for improvement.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-21 10:31:16 +02:00
Elias Naur e140f2a1c0 ui/app: (iOS) check for first responder status before changing focus
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-20 17:30:19 +02:00
Elias Naur ac6f0c3f18 ui/app: (iOS) move memory pressure callback to view controller
With multiple GioViewControllers we might invoke the garbage collector
more than once, but in return we simplify the GioAppDelegate which will
become the interface to native widgets.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-20 16:50:35 +02:00
Elias Naur e6a68db4c0 ui/app: (iOS) resize window when the software keyboard is shown
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-20 16:48:00 +02:00
Elias Naur 46ecbb86d2 ui/app: remove unused method
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-20 12:57:35 +02:00
Elias Naur 9c9656e729 ui/app: fix indent
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-20 12:51:13 +02:00
Elias Naur d2132fce3b ui/app: remove debug line
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-20 11:14:48 +02:00
Elias Naur 4b3b8fa413 ui/app: (iOS) move UIWindow notifications to GioView
Simplifies GioAppDelegate and allows for proper deregistering of
listener.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-20 09:04:00 +02:00
Larry Clapp 56926a0449 ui/app: fix init() appending '' to os.Args
init() says

  args := strings.Split(extraArgs, "|")
  os.Args = append(os.Args, args...)

strings.Split says

  If s does not contain sep and sep is not empty, Split returns a slice
  of length 1 whose only element is s.

which means init() adds a blank arg to the end of os.Args when extraArgs
is empty.  This fixes that.

Signed-off-by: Larry Clapp <larry@theclapp.org>
2019-08-14 10:35:08 +02:00
Elias Naur 7c197cc666 ui/app: support EGL versions >= 2.0
Versions with major > 1 don't exists, but let's handle the version
correctly in any case.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-12 00:29:18 +02:00
Elias Naur 5605919555 ui/app: (windows) don't fail eglChooseConfig just because no configs were found
The resulting eglGetError will return a confusing EGL_SUCCESS.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-12 00:05:57 +02:00
Elias Naur 842d29373f ui: documentation tweaks
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-11 19:36:46 +02:00
Elias Naur 340fff9814 ui/key: rename ChordEvent to just Event
Event is like pointer.Event and we don't want the stuttering of
key.KeyEvent.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-11 12:50:40 +02:00
Elias Naur 2a0b0077da ui/app: (wasm) add checks for required extensions
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-10 00:49:28 +02:00
Elias Naur 7bc18c0139 ui/app: more documentation
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-09 22:27:33 +02:00
Elias Naur a8f42cd567 ui/app: expand package documentation
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-09 22:16:52 +02:00
Elias Naur 657c40e4bb ui/app: support 0 for window width and height
The zero value means that the client don't care and a sensible
default is chosen.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-09 22:01:25 +02:00
Elias Naur e5738481f8 ui/app: add package documentation and document Main
Split Main into the common Main function and platform specific
main functions.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-09 21:34:29 +02:00
Elias Naur 87f8fd4152 ui/app: update documentation
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-09 21:17:33 +02:00
Elias Naur 4e005f2bfa ui/app: rename DrawEvent to UpdateEvent and Window.Draw to Window.Update
Window.Draw is not the right name for a method that does more than
just drawing. Rename to Update instead, and rename the DrawEvent
accordingly for symmetry.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-07 20:35:37 +02:00
Elias Naur dd35a48a61 ui/paint: rename the draw package
The draw package name clashes with the standard library draw package.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-07 20:11:53 +02:00
Elias Naur 6e26c92c75 all: remove exported Decode methods on operations
Add decode functions to the packages that need them instead. For
TransformOp that is used in multiple packages, add the decode
function to the internal ops package.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-07 17:21:34 +02:00