Commit Graph

1372 Commits

Author SHA1 Message Date
Elias Naur 34c212d152 app/internal/window: [macOS] split out gio_createWindow
Updates #19

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-05 12:10:23 +02:00
Elias Naur 4f64ac1736 io/pointer: remove special case note
Scroll events are no longer special after gioui.org/commit/65d4707e3.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-05 11:45:55 +02:00
Elias Naur a4e572d0e3 cmd,example: gump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-05 10:57:08 +02:00
Elias Naur 65d4707e3e io/pointer,io/router,gesture: add pointer.Foremost priority
Replace the pointer.Scroll special case with a new priority that
indicates the foremost handler, checked in gesture.Scroll.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-05 10:46:19 +02:00
Elias Naur 2accb88381 app/internal/window: [macOS] fix zero-length clipboard reads
Fixes #126

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-05 10:09:17 +02:00
Elias Naur 278e9bc334 app/internal/window: [macOS] remove useless retain/release
The window and its view is guaranteed to outlast the display link.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-03 21:20:06 +02:00
Elias Naur c225daa845 app/internal/window: [macOS] use regular map for view-to-window lookups
All accesses to the view map now happens on the main thread, so
there is no need for a sync.Map anymore.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-03 21:20:02 +02:00
Gordon Klaus 1a070a36b6 io/pointer: add Drag event type
This eliminates needless redraws for handlers that care about drag events and not move events, like gesture.Scroll.

Signed-off-by: Gordon Klaus <gordon.klaus@gmail.com>
2020-06-03 20:04:16 +02:00
Elias Naur cb5cc02560 app/internal/window: [macOS] remove frivolous cascadeTopLeftFromPoint call
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-03 19:13:06 +02:00
Gordon Klaus 33a87ac61c io/router: deliver scroll events only to the foremost scroll handler
Signed-off-by: Gordon Klaus <gordon.klaus@gmail.com>
2020-06-03 15:38:56 +02:00
Gordon Klaus 9d2a6c48d8 io/pointer: add InputOp.Types to specify which types of events to receive
Signed-off-by: Gordon Klaus <gordon.klaus@gmail.com>
2020-06-03 15:29:12 +02:00
Elias Naur 4484674ab1 layout: don't run alloc tests with -race
The race runtime allocates where the non-race runtime doesn't.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-03 10:18:57 +02:00
Gordon Klaus e188d0e6ff io/pointer,gesture,app/internal/window: add pointer.Scroll event type
Signed-off-by: Gordon Klaus <gordon.klaus@gmail.com>
2020-06-03 10:08:22 +02:00
Elias Naur 275a91f26a io/router: remove countPointerEvents
assertEventSequence is shorter and clearer and more precise.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-03 10:03:53 +02:00
Elias Naur d489c20b84 io/pointer: update documentation examples
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-02 16:37:38 +02:00
Elias Naur fc290f3457 example,cmd: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-02 15:49:16 +02:00
Elias Naur 4cb96ccad9 app/internal/window: [macOS] always draw synchronously
Asynchronous draws introduces flickering on resizes.

Fixes #123

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-02 15:07:04 +02:00
Elias Naur ff71d0c518 io/router: fix typo
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-02 14:20:40 +02:00
Elias Naur 9196ce0369 cmd,example: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-02 12:20:20 +02:00
Elias Naur c19ed05342 op: change CallOp to be a return value from MacroOp.Stop
Converting

	macro := op.Record(ops)
	...
	macro.Stop()

	macro.Add()

to

	macro := op.Record(ops)
	...
	call := macro.Stop()

	call.Add(ops)

Which is more general (call.Add can take a different ops than the op.Record
that started it), and enforced the order between Stop and the subsequent Add.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-02 12:07:20 +02:00
Elias Naur ce0cc706ad layout: add test that Flex doesn't allocate
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-02 11:37:45 +02:00
Elias Naur 2bdf8c3851 layout: add test that Stack doesn't allocate
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-02 11:36:36 +02:00
Elias Naur acc23a5b3e op: make MacroOp methods take value receivers
The only mutable field is "recording", which is used for a sanity
check. THat check is performed (less generally) by Ops.macroStack.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-02 11:12:37 +02:00
Elias Naur 3e8c502550 op: return value StackOp from Push and make Pop use a value receiver
To match Record, we'd like Push to return a value. To do that and
support the one-line

	defer op.Push(ops).Pop()

Pop needs to use a value receiver as well. Drop the active field
and make it so. The field was only a sanity check, a check which is
already done by Ops.stackStack, albeit with a less specific panic.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-02 10:52:46 +02:00
Thomas Bruyelle ae8a377cda op: add op.Push and op.Record funcs
The funcs replace stack.Push and macro.Record, which become private.
This makes stack and macro faster to write, in particular for stacks
where you can just write the following line to save and restore the
state :

  defer op.Push(ops).Pop()

This usage requires Push to return a pointer (since Pop has a pointer
receiver), or else the code doesn't compile.

For consistancy, I tried to do the same for op.Record, but this implied
to turn all the MacroOp fields into pointers, and this caused some
panics. As a result, op.Record doesn't return a pointer.

An other side effect pointed by Larry Clapp: StackOp and MacroOp are not
re-usable any more, you have to allocate a new one for each usage, using
the described funcs above.

Signed-off-by: Thomas Bruyelle <thomas.bruyelle@gmail.com>
2020-06-02 10:39:56 +02:00
Pierre.Curto bade277876 widget: Clickable: added support for NumClicks
Clickable.Clicks() now returns the number of clicks.

Signed-off-by: Pierre.Curto <pierre.curto@gmail.com>
2020-06-02 10:26:14 +02:00
Elias Naur 3ef841bd07 widget: make Clickable.Clicked use a pointer receiver
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-02 10:19:50 +02:00
Elias Naur f86e1a6421 app/internal/window: [wayland] move listener registration to Go
In turns out that only the listener declarations need to be in C, not
the listener registration calls.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-01 21:56:06 +02:00
Elias Naur eafe09967f cmd,example: bump gio
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-01 00:05:45 +02:00
Elias Naur 28bf9e2001 layout: create input group for List
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-01 00:04:44 +02:00
Elias Naur 6fbcae07cb app/internal/window: fix multitouch action on Android
Fixes #122

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-01 00:04:44 +02:00
Elias Naur 3b28c5d067 io/router: simplify pointer event routing
- Drop pointer.Event.Hit in favour of Enter/Leave events.
- Track enter/leaves for each pointer.ID (updates #122). Add test.
- Resolve grabs once.
- Get rid of scratch slice.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-06-01 00:04:34 +02:00
Elias Naur 23c2d44b8c io/router: add addPointerHandler convenience function
Remove a redundant call and shorten image.Rectangle literals while here.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-31 13:29:15 +02:00
Elias Naur 2487842aae cmd,example: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-31 12:00:10 +02:00
Elias Naur 4bf043eb5b app/internal/window,app/internal/xkb: silence string(int) conversion warnings
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-31 11:57:45 +02:00
Elias Naur d2c67cdf80 app/internal/egl: use nilEGLConfig to guard against int vs pointer-typed EGLConfig
Updates #121

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-30 16:18:30 +02:00
Elias Naur e9500f5f4c cmd,example: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-30 14:44:02 +02:00
Elias Naur 1377bea3cd app/internal/window: [macOS,iOS] reduce display link starting and stopping
Recent changes to the macOS threading exposed a problem where a
window's display link may fail to start after being started and stopped
in rapid succession.

Introduce a displayLink type that waits a while after the last stop
request before stopping its display link. That seems to be the way
other projects are using display links.

As a bonus, the new implementation avoids the potentially expensive
overhead of frequent starting and stopping the underlying OS thread.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-30 14:42:00 +02:00
Elias Naur 3817941175 app/internal/window: [iOS] move redraw logic to Go
We're about to move the display link to common Go code. To do that,
we need the redraw logic in Go as well.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-30 14:16:54 +02:00
Elias Naur 266b01bb5d app/internal/window: [wasm] report key modifiers for pointer events
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-27 17:12:11 +02:00
Elias Naur 6a0da04598 cmd,example: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-27 16:41:26 +02:00
Elias Naur 9da54eac61 app/internal/window: [X11] report key modifiers for pointer events
Fixes #120

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-27 16:39:24 +02:00
Elias Naur f6dff2fd1c app/internal/window,app/internal/xkb: [Wayland] report modifiers for pointer events
Updates #120

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-27 16:39:07 +02:00
Elias Naur 7b6eafcb59 cmd,example: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-27 16:17:22 +02:00
Elias Naur 33146961f4 app/internal/window: [macOS] avoid racy access to window width, height, scale
The macOS redraw callback is not invoked on the main thread, so its
access to window fields must be synchronized.

An alternative would be to schedule the asynchronous redraws on the main
thread, but I believe frame callbacks are performance-sensitive enough
to warrant the extra locking complexity.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-27 16:12:57 +02:00
Elias Naur 5c6ff659bf app/internal/window: [macOS] don't call Cococa from non-main thread
Only the synchronous draws from the main thread may involve changing
width, height and scale. Introduce cached window.width and window.height
fields and limits updates to main-thread draws.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-27 16:07:40 +02:00
Elias Naur ad93e32128 widget: redefine Enum.Changed and Bool.Changed to consider only user interaction
Ignore programmatic value changes to avoid feedback loops.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-24 19:48:33 +02:00
Elias Naur f2df7c1458 widget: change Enum.Layout to follow layout protocol
Respect constraints and return dimensions.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-24 13:52:48 +02:00
Elias Naur 31d722d9eb widget: change Bool.Layout to follow layout protocol
Just like Clickable, Bool.Layout should respect constraints and
return its dimensions.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-24 13:50:03 +02:00
Elias Naur 3164a3fee7 example,cmd: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-05-24 13:24:13 +02:00