Commit Graph

1606 Commits

Author SHA1 Message Date
Elias Naur ade248311c example/go.*: update Gio version
Updates gio#171

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-10 15:28:36 +01:00
Elias Naur 9843176adb widget: don't process key releases as presses in Editor
Fixes gio#171

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-10 15:27:22 +01:00
Elias Naur 002a66f3f3 Revert "app/internal/xkb: fix duplicate edit events for special keys"
This reverts commit e84a2344cf.

The fix is wrong: it's supressing the release key.Event, not key.EditEvents.
The culprit is that Editor fails to ignore release events.

Updates gio#171
2020-11-10 15:27:17 +01:00
Elias Naur fb70fb1c95 example/go.*: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-09 11:01:45 +01:00
Rajiv Kanchan e84a2344cf app/internal/xkb: fix duplicate edit events for special keys
Edit events were being sent twice, once upon key press and again on key release for special keys such as Enter, Arrow keys etc, which resulted in duplicate inputs while pressing these keys. key.EditEvents for special keys now fire once on key press only.

Signed-off-by: Rajiv Kanchan <rajiivkanchan@gmail.com>
2020-11-09 11:00:52 +01:00
Elias Naur 8b5c0d8b0c op/paint: document that color.RGBA values are in the sRGB color space
Updates gio#169

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-08 19:31:38 +01:00
Elias Naur dbc0796d02 cmd/gogio,cmd/gogio/testdata: update Gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-06 20:56:54 +01:00
Elias Naur edaa112c40 example: update to latest Gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-05 16:33:38 +01:00
Elias Naur 94d242d18c op/paint: remove support for PaintOp.Rect
PaintOp.Rect is the wrong abstraction; it implies a clip operation
better handled by package clip, and not all paints need it (colors).
Furthermore, it's awkward to specify a PaintOp that fills up the
current clip area, regardless of its size.

Redefine PathOp to mean "fill current clip area".

API change. Replace uses of PaintOp.Rect with a TransformOp applied
before the PaintOp.

Leave a TODO for the PathOp infinity area.

Fixes gio#167

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-05 16:32:19 +01:00
Elias Naur afb52194d1 app/headless,internal/rendertest: replace PaintOps with Fill/FillShape
We're about to remove PaintOp.Rect. Replacing PaintOps with Fill or
FillShape where possible will ease the transition.

Using Fill in tests exposed a problem with the infinity in paint.Fill.
Adjust it for now; it will be removed later.

Updates gio#167

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-05 16:12:39 +01:00
Elias Naur 852958f4b5 gpu,widget,op/paint,gpu: remove support for ImageOp.Rect
This is effectively a revert of commit gioui.org/commit/69dfd2e3a5541.

ImageOp.Rect is the wrong abstraction; it implies a clipping operation that is
better handled by package clip.

API change. Uses of ImageOp.Rect should apply a clip.Rect before the PaintOp,
or use image.RGBA.SubImage (or similar).

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-05 13:36:36 +01:00
Elias Naur 6d98eccad0 f32: add Affine2D.String
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-05 13:36:36 +01:00
Elias Naur c62a002d21 gpu: remove unused field
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-05 10:15:46 +01:00
Elias Naur efdd5ae602 op/paint: make the shape argument last in FillShape
FillShape is a generalization of Fill, so it seems more natural to
have the extra argument last.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-03 18:57:25 +01:00
Elias Naur 3107c95757 op/clip: remove unused parameter from Rect.Op
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-03 18:57:25 +01:00
Egon Elbre 88b3c84ef6 example: add gradients
Signed-off-by: Egon Elbre <egonelbre@gmail.com>
2020-11-03 15:39:06 +01:00
Egon Elbre f00f3a3359 gpu: add linear gradient
Signed-off-by: Egon Elbre <egonelbre@gmail.com>
2020-11-03 15:39:06 +01:00
Elias Naur 0641a34b24 internal/rendertest: lower test tolerances
Egon Elbre pointed out that a difference of 20 means a 10% difference.
Lowering the tolerance to 5 didn't work on my setup; leave it at 10.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-03 15:39:06 +01:00
Elias Naur 18869735db example/go.*: bump gio version
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-02 19:46:44 +01:00
Elias Naur 38cdd28681 gpu: fix depth buffer corruption on the Fairphone 2
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-11-02 19:44:56 +01:00
Egon Elbre a55302a498 app/internal/window: use keyed fields
Signed-off-by: Egon Elbre <egonelbre@gmail.com>
2020-11-01 17:13:00 +01:00
Josiah Niedrauer 42e568775c io/key: implement key.Release state
Implement key state for the following platforms:
js, wayland, windows, x11.

Unsupported platforms will continue to function as before, sending
key.Press for all key events.

Signed-off-by: Josiah Niedrauer <josiah@niedrauer.com>
2020-11-01 17:13:00 +01:00
Elias Naur ef652f4922 app: move ownership of GPU context to app.Window
The Window creates the context, and should also be responsible for
destroying it.

As a bonus, the wrong release ordering of loop.renderLoop is fixed.
Before this change, the context would be destroyed before the renderer
got a chance to destroy its resources.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-10-30 16:47:05 +01:00
Elias Naur 3740f89171 app/internal/window: [Windows] properly handle WM_QUIT
First, don't filter on HWND in GetMessage and PeekMessage, lest
thread-specific messages may get lost. See

https://devblogs.microsoft.com/oldnewthing/20050209-00/?p=36493

Second, replace the dead status with the detection of WM_QUIT; it's
what it's there for.

May update gio#168

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-10-27 17:57:06 +00:00
Elias Naur f9642447ec .builds: fix FreeBSD builders
For some reason, the FreeBSD 12 image doesn't have xorg-vfbserver.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-10-26 21:34:23 +01:00
Chris Waldon 672555d3d0 widget/material: remove unused fill helper
Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
2020-10-22 18:57:55 +02:00
Chris Waldon 3d042093a5 widget/material: update buttons to use new paint Fill API
Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
2020-10-22 18:57:52 +02:00
Chris Waldon fc307c1e71 op/paint: add Fill helpers for painting an area with a solid color
Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
2020-10-22 18:57:47 +02:00
Chris Waldon 685e0772a3 op/clip: add UniformRRect to create rects with uniform corner radii
Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
2020-10-22 18:57:43 +02:00
Chris Waldon 8bdca84c56 op/clip: export Op method of clip shapes
This allows passing the resulting clip.Op types into functions that
draw shapes.

Signed-off-by: Chris Waldon <christopher.waldon.dev@gmail.com>
2020-10-22 18:57:40 +02:00
Elias Naur d5bdf0756a cmd/gogio: use GOOS=ios to target iOS with Go 1.16 and newer
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-10-20 11:46:34 +02:00
Elias Naur 7a4b48f67b gpu: delete redundant drawOps.reset
Noticed by Steve Lam

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-10-18 18:22:16 +02:00
Elias Naur 2ddd4f1985 .builds: fix apple builder
The python package is gone, we may not need it and/or Debian installs
python3 by default.

curl is needed for automatically applying patches from the mailing list.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-10-13 15:31:19 +02:00
Egon Elbre 24d6f3fb65 f32: optimize Affine2D
encode/decode seem to introduce significant overhead. Inline them
manually. It'll make code harder to read, however the performance wins
are significant.

name \ time/op                 before       after        delta
TransformOffset-32             2.64ns ± 0%  0.25ns ± 0%   ~     (p=0.100 n=3+3)
TransformScale-32              2.64ns ± 0%  0.25ns ± 1%   ~     (p=0.100 n=3+3)
TransformRotate-32             2.65ns ± 0%  0.24ns ± 3%   ~     (p=0.100 n=3+3)
TransformTranslateMultiply-32  42.5ns ± 0%  12.9ns ± 0%   ~     (p=0.100 n=3+3)
TransformScaleMultiply-32      42.6ns ± 0%  12.9ns ± 0%   ~     (p=0.100 n=3+3)
TransformMultiply-32           42.2ns ± 0%  12.9ns ± 2%   ~     (p=0.100 n=3+3)

Signed-off-by: Egon Elbre <egonelbre@gmail.com>
2020-10-13 15:14:33 +02:00
Elias Naur e690c14ddc cmd/gogio: lower minimum OpenGL ES to 2.0 on Android
The Fairphone 2 only supports OpenGL ES 2.0, but otherwise seems
capable of running Gio. By lowering the minimum requirement, Gio apps
will be available in the Play Store for Fairphone 2 devices.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-10-12 15:16:56 +02:00
Pierre.Curto f942db9e25 layout: added documentation
Added comment on the use of Dimension.Baseline and Direction.Layout constraint minimum clearing.
Also, renamed the Direction receiver for consistency and removed unnecessary conversions.

Signed-off-by: Pierre.Curto <pierre.curto@gmail.com>
2020-10-11 11:39:30 +02:00
Elias Naur 29740ba593 io/system: note CommandEvent is delivered as a pointer
For gio#163

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-10-05 09:59:49 +02:00
Elias Naur d2e06d9389 widget: update Editor dimensions after input
Fixes gio#162

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-09-29 19:07:15 +02:00
Elias Naur 4bab6fcf32 internal/f32color: add colorspace-correct function for alpha scaling
Package material's ad-hoc mulAlpha didn't take the sRGB color-space
into account, which meant that alpha-scaled colors were subtly wrong.
Introduce f32color.MulAlpha and convert all uses to it.

Thanks to René Post for finding and debugging the issue.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-09-28 09:06:40 +02:00
Elias Naur 679a34b116 app/internal/window: default to X11 on unix systems
Wayland doesn't guarantee the presence of server-side window decorations
(border, close/maximize/minimize buttons), and Gio doesn't have client-side
decorations either (issue #29). The issue is more than a year old, so it's time
to default to X11 to have a good out-of-the-box experience on unix systems.

Updates gio#29

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-09-27 14:29:31 +02:00
Jack Mordaunt ef7b3e75f4 widget: delete whole words with key modifier
Delete entire words with key modifier, ie "ctrl + delete".

Signed-off-by: Jack Mordaunt <jackmordaunt@gmail.com>
2020-09-17 10:50:49 +02:00
Jack Mordaunt d27d1a989e widget: make editor skip words with key modifier
Signed-off-by: Jack Mordaunt <jackmordaunt@gmail.com>
2020-09-17 10:48:05 +02:00
Sebastien Binet 2f67feafc0 app/permission/camera,cmd/gogio: add support for camera permission
Signed-off-by: Sebastien Binet <s@sbinet.org>
2020-09-12 17:32:11 +02:00
Elias Naur 956bb10a0f cmd/gogio: document -minsdk
Tweak documentation a bit while here.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-09-12 11:53:07 +02:00
Elias Naur 829ee4559c .builds: remove annotations
They're gone from sr.ht, according to
https://todo.sr.ht/~sircmpwn/git.sr.ht/318#event-47831.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-08-29 18:27:55 +02:00
Elias Naur 3dea674390 gogio: skip Android tests when no adb is found
Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-08-29 18:10:31 +02:00
Elias Naur c03dde453c .builds: merge android.yml into linux.yml
sr.ht recently lowered the number of concurrent builders per commit
to 4.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-08-29 17:50:31 +02:00
Sebastien Binet f2cd504a9f op/clip: smoother implementation of Arc for large angles
Signed-off-by: Sebastien Binet <s@sbinet.org>
2020-08-29 17:36:37 +02:00
Elias Naur 1584f3a64a app/internal/window: [X11] use correct type for setting X properties
32-bit property values are transferred with the C type "long", which
may be 64 bit.

Fixes "invalid atoms" errors from Firefox and Gedit.

While here, add additional clipboard formats to please Gedit.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
2020-08-28 13:34:10 +02:00
Sebastien Binet d57edbb49d widget/material: use clip.Path.Arc to draw loader
Signed-off-by: Sebastien Binet <s@sbinet.org>
2020-08-27 15:25:23 +02:00