Commit Graph

424 Commits

Author SHA1 Message Date
Elias Naur e2df2f394a apps/gophers: split main into App and UI and add BenchmarkUI
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-02 19:52:26 +02:00
Elias Naur 6ce224b89f cmd/gio: don't strip debug info for webassembly builds
The space savings are minimal and we lose function names in the
browser debuggers.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-02 15:48:27 +02:00
Elias Naur 1c5ceab9c1 cmd/gio: don't add a container div for -target js
THe webassembly backend can create and add it itself.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-02 09:05:34 +02:00
Elias Naur eee497f22a ui/app: (wasm) create and add container div if one is not provided
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-02 09:04:00 +02:00
Elias Naur 28bd97f877 ui/app: delete unused field
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-02 08:59:54 +02:00
Elias Naur e309fb42d4 apps/go.mod: update gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-02 08:57:31 +02:00
Elias Naur 0be3492e07 ui/app: (wasm) avoid deadlock from focus changes
showTextInput is called from the window loop in window.go, but
could result in an immediate event which then deadlocks waiting for
the window loop to handle it.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-02 08:54:21 +02:00
Elias Naur 10792f0a00 apps/gophers: update gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-01 19:00:30 +02:00
Elias Naur 73b1e64209 ui/input: change Queue to return Events one at a time
By returning all events, widgets that might return early from its
event loop might throw away subsequent events. Instead of requiring
those widgets to store the event list, convert input.Queue to step
through the available events one at a time.

Functional revert of 1735d5ced8.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-01 18:56:49 +02:00
Elias Naur b15a32065f ui/app: (wasm) fix typo
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-01 17:48:53 +02:00
Elias Naur eefe3d146d apps/go.mod: update gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-01 15:31:10 +02:00
Elias Naur cb312c8d32 ui/app: drop Event
input.Event is enough if we stretch "input" to mean both input
devices and other events such as profiling events and system
commands.

The pointer and key packages are separate already, so I don't
expanding the meaning is unreasonable.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-01 15:27:14 +02:00
Elias Naur 69bba3aa4b ui,ui/draw: fix decoding of negative integers
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-01 10:43:17 +02:00
Elias Naur 06cee16c89 apps/gophers: update gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-01 10:09:56 +02:00
Elias Naur bfece0beba ui: change area ops to use rectangles, not sizes
And then use the more general rectangles to add a buffer around
text.Editor click and scroll area.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-08-01 10:06:19 +02:00
Elias Naur d3df90887e apps/go.mod: update gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-31 22:54:49 +02:00
Elias Naur 46b9e7b9ab ui/app: (macOS, iOS) ignore SIGPIPE
Work around golang.org/issue/33384

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-31 22:53:30 +02:00
Elias Naur 3d9861011e ui/layout: restore Flex.Rigid behaviour
Broken by 5f2adf9b2f.

Clamp to 0 while we're here.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-30 15:25:23 +02:00
Elias Naur 5bf5f1e64d cmd/gio: (wasm) support command line flags
Strip also DWARF and the symbol table while here.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-29 13:36:12 +02:00
Elias Naur 7182e29d28 apps: update gio
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-29 12:15:27 +02:00
Elias Naur 5f2adf9b2f ui: get rid of Inf
It's not worth the special cases. Use a large value where needed
(layout.List, text.Editor...) instead.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-29 12:12:51 +02:00
Elias Naur 1b684ffab6 apps/go.mod: update gio
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-29 02:53:51 -07:00
Elias Naur 5e1f078b12 ui: merge Transform into TransformOp
The separate Transform type is not worth its weight.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-29 02:50:55 -07:00
Elias Naur d178167c3b ui/app/internal/gpu: add workaround for render corruption
Fixes gio#13

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-29 02:50:50 -07:00
Elias Naur d93925c0c2 apps/go.mod: upgrade gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-26 08:58:01 -07:00
Elias Naur a0d1d93ccf ui/app: (linux) don't deadlock when failing to create window
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-25 17:27:10 -07:00
Elias Naur a2e485b56d README.md: add link to Gophercon 2019 talk
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-25 13:10:49 -07:00
Elias Naur c1128e7f8a ui/app/internal/gpu: only apply clear optimization for rect clips
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-24 20:16:38 -07:00
Elias Naur b45222b457 apps: drop init funcs
Now that Gio runs main functions everywhere, init func are no longer
necessary.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-22 11:40:13 +02:00
Elias Naur c080a54038 ui/app: call main from Android and iOS
Android can only run c-shared libraries which means that every
Gio program must create its window and event loop from an init
function.

The same applies to iOS but for a more benign reason: the gio tool
builds programs in c-archive mode for iOS and links the binary with
a Objective-C driver.

Allow Gio programs to run off its main function by linking to and
invoking main even from Android libraries and iOS ditto.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-22 11:33:09 +02:00
Elias Naur 4e0d820a5b ui/app: (android) block until DataDir is ready
The app data dir is not set until after Go's init functions have
run, which means that DataDir is inherently racy. Avoid that race
by blocking in DataDir until it is set from Java.
In other words, trade a race condition with a deadlock.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-22 09:37:48 +02:00
Elias Naur 1ee8c08f3b ui/app: make the default window title "Gio", not "Gio program"
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 22:02:30 +02:00
Elias Naur f47a38844b apps: update to newest gio
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 22:01:29 +02:00
Elias Naur dd081c78b9 ui/app: make DrawEvent optional
It is never a good idea not to draw in response to a DrawEvent, but
let's not hang the program if it doesn't call Window.Draw.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 21:58:54 +02:00
Elias Naur 4724666ba0 apps/go.mod: update gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 20:04:59 +02:00
Elias Naur 2f9e29d878 ui/app: (macOS) avoid double-drawing in NSOpenGLView update
Instead of drwaing twice when updated, schedule a redraw.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 19:19:34 +02:00
Elias Naur 2cb3832c16 apps/go.mod: update gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 17:39:14 +02:00
Elias Naur 21ad48b7de ui/app: (macOS) use consistent scale for pointer events
Instead of querying the backing store scale for every pointer event,
use the scale from the last window draw. It might not make any visible
difference because we redraw on scale changes, but it is more correct.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 17:34:12 +02:00
Elias Naur 71f6df9352 ui/app: (macOS) redraw when NSOpenGLView update is called
When moving a window to another monitor, update is called when the
opengl backing store updates its internal size.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 17:20:44 +02:00
Elias Naur 8eea6b80f3 ui/app: (macOS) use a consistent and constant backing store constant
Compute and keep constant the pixel density, to avoid window content
changes when moving to another monitor with a different density.

Use backing store scale, not content scale for input events.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 16:59:29 +02:00
Elias Naur cb59594b5b Revert "ui/app: make window event queue buffered"
Breaks the ack mechanism of sending a dummy ack event to ensure
the previous event has been processed.

This reverts commit 7582b835bc.
2019-07-21 15:36:02 +02:00
Elias Naur 2cf2f211cb apps/go.mod: update gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 13:14:57 +02:00
Elias Naur 9e0e4af8c6 ui/app,ui/key: move TextInputState from key to internal package
Clients have no need for the TextInputState type.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 13:12:24 +02:00
Elias Naur b46bad09bd ui/app: remove redundant redraw check
Now that the input router triggers a redraw when a focus event is
added, it is no longer necessary to check for that condition in
Window.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 12:53:28 +02:00
Elias Naur 3f7735ccdf ui/app/internal/input: redraw if focus events was added
The key queue might generate focus events. Schedule a redraw if so.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 12:50:53 +02:00
Elias Naur 7582b835bc ui/app: make window event queue buffered
Input events are asynchronous, so add buffered to the event queue
so that a slow client does not stall the native window.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 12:43:42 +02:00
Elias Naur 5f0047567e apps: update gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 11:50:43 +02:00
Elias Naur b6290990ad ui/text,ui/layout: move ui.Config and input.Queue to parameters
I too often forget to initialize widgets' config and queue. Moving
them from fields to parameters fix that. The change results in a
little more verbosity but cleaner code.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-21 11:44:48 +02:00
Elias Naur 6c0850ce60 apps/go.mod: update gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-20 16:26:47 +02:00
Elias Naur cd244f21ab ui/app: (macOS) don't release opengl context
I haven't found a reliable way to re-create the context and redraw
after deminiaturization or app unhide.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2019-07-20 16:22:41 +02:00