Commit Graph

1333 Commits

Author SHA1 Message Date
Keavon Chambers
2ee8e56cef Fix sending platform-specific shortcut keys to frontend before editor is initialized with the platform set 2025-12-04 15:35:30 -08:00
Keavon Chambers
783ea0b437 Unwrap the Layout enum to replace it with the WidgetLayout struct now called Layout (#3448) 2025-12-04 15:24:40 -08:00
Keavon Chambers
3c4ad8b720 Refactor the WidgetLayout struct to remove SubLayout and avoid sending LayoutTarget to frontend 2025-12-04 02:44:54 -08:00
Keavon Chambers
4581689d9c Rename WidgetHolder to WidgetInstance 2025-12-04 01:10:22 -08:00
Keavon Chambers
810ce40e9b Restyle and refactor shortcut labels to send hints bar and welcome screen layouts from Rust (#3447)
* Restyle UserInputLabel and refactor its usages to have all input its data sent from Rust

* Replace the welcome screen quick buttons with ones sent by backend

* Add the ShortcutLabel widget to the backend

* Replace hints bar with a backend-controlled layout; show mouse icons in place of mouse labels
2025-12-04 01:04:14 -08:00
Keavon Chambers
6ed42d06bb Fix horizontal scrolling on Mac when holding Shift (#3446) 2025-12-03 20:06:00 -08:00
Timon
39b5229df7 Desktop: Limit application to a single instance (#3441)
* only allow single instance

* more reliable CEF cache cleanup

* some cleanup

* fix lock file location

* add simple signal handling

* fix skew handles on desktop

* mac remove unused helpers
2025-12-03 19:13:15 +01:00
Keavon Chambers
600fb5c28f Refactor the old menu bar plumbing to use standard TextButtons (#3444)
* Refactor the old menu bar plumbing to use standard TextButtons

* WIP: Fix Mac native menu bar

* WIP: fix desktop menu bar mac

* Refactor menu bar definitions to use the builder pattern

* WIP: fixup desktop

* cleanup

* fix linux

* Remove dead code that was failing to lint

---------

Co-authored-by: Timon Schelling <me@timon.zip>
2025-12-03 12:41:54 +00:00
Timon
3fd0460d03 Desktop: Update CEF to 142 (#3431)
* update CEF to 142

* fix win

* fixup

* post merge fix

* use getter instead
2025-11-30 23:23:31 +00:00
Keavon Chambers
e8ebcc2c21 Replace text-only tooltips with custom richly styled tooltips (#3436)
* Replace the title attribute with custom FloatingMenu tooltips

* Separate tooltip labels and descriptions into two styled blocks

* Move keyboard shortcut tooltips to a separate section at the bottom

* Update shortcut key styling in tooltips and hints bar

* Fix .to_string()
2025-11-30 13:32:58 -08:00
Timon
bb4516e377 Desktop: Add app menu for Mac (#3428)
* add mac app menu

* review fixup

* Remove "About Graphite" ellipsis, add "Show All", make it say "Quit Graphite"

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-11-28 23:42:14 +00:00
Keavon Chambers
221c2e9b47 Update the user manual's most outdated parts and improve its table styling 2025-11-28 03:00:32 -08:00
James Lindsay
8383a3afac New node: 'Extrude' (#3414)
* Add extrude node

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-11-26 18:50:10 -08:00
Keavon Chambers
9eb8835bd5 Add the 'Blend Shapes' and 'Origins to Polyline' nodes; generalize the 'Morph' node to >2 states (#3405)
* New nodes: 'Morph' and 'Multi-Morph'

* Blend Shapes node

* Add the 'Index Points' node

* Fix failing test
2025-11-25 22:17:55 -08:00
Keavon Chambers
eb0f019b15 New nodes: 'Reset Transform', 'Replace Transform', 'Count Points', 'Index Points' (#3420)
- Add the 'Reset Transform' and 'Replace Transform' nodes
- Add the 'Count Points' and 'Index Points' nodes
- Make the 'Index Elements' node support negative indexing from the end
- Make the 'Flatten Vector' node's implementation reusable
- Fix crash displaying 0x0 raster image in the Data panel
- Fix the 'Points to Polyline' node not working on two-point objects
2025-11-25 20:41:59 -08:00
James Lindsay
117ce301b0 Fix regressions with G/R/S (#3355)
* Better local grab

* Formatting

* Multiply by document_to_viewport.matrix2.y_axis.length()

* Fix logic errors

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-11-25 15:26:19 -08:00
Dennis Kobert
a932eaedcf Render artwork at correct resolution when using vello on wasm (#3416)
* Work on fixing rendering for wasm+vello

* Render vello canvas in wasm at the correct resolution

* Cleanup unused surface rendering code

* Remove vector to raster conversion

* Remove desktop changes

* Revert window.rs changes

* Don't round logical coordinates

* Fix desktop compilation + don't round logical coordinates for svg rendering

* Further cleanup

* Compute logical size from acutal physical sizes
2025-11-24 14:23:27 +00:00
Keavon Chambers
6e66c79392 Fix 'Mask' node missing Properties widget; fix crash with 'Brightness/Contrast Classic' node (#3404)
* Fix 'Mask' node missing Properties widget; fix crash with 'Brightness/Contrast Classic' node

Also clean up dead code and improve tooltip for the "-" Properties panel widget fallback.

* format type

---------

Co-authored-by: Adam <adamgerhant@gmail.com>
2025-11-24 09:21:07 +00:00
Adam Gerhant
7afbeaa1f9 Separate graph error diagnostics from frontend node metadata (#3385)
* Separate error popup from node

* Improve context menu data

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-11-24 08:55:30 +00:00
Adam Gerhant
06484ef4e0 Show red connectors on a type-erroring node and accurate connector colors upstream of it (#3110)
* Refactor TypeSource

* Add complete valid types

* Add invalid type

* Improve valid/complete types and disconnecting

* Code review

* Return types on error

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-11-19 03:00:32 +00:00
Dennis Kobert
57b0b9c7ed Restructure node crates (#3384)
* Restructure node-graph folder

* Fix wasm compilation

* Move node definitions out of *-types crates

* Cleanup

* Fix warnings

* Fix warnings

* Start adding migrations

* Add migrations and move memo nodes to gcore

* Move nodes/gsvg-render -> rendering

* Replace some hard coded identifiers and fix automatic conversion

* Fix Vec2Value node migration

* Fix formatting

* Add more migrations

* Cleanup features

* Fix core_types::raster import

* Update demo artwork (to make profile ci work)

* Move *-types to node-graph/libraries folder

* Add missing node migrations

* Migrate more nodes

* Remove impure memo node

* More fixes and remove warning

* Migrate context and add a few missing migrations

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-11-18 10:21:54 +00:00
Adam Gerhant
85965c8b6a Fix export edge distance (#3386) 2025-11-17 17:22:05 +00:00
Timon
e751979e5c Desktop: Mac fix keyboard input (#3371)
* add browser debug port env

* mac use option as alt

* fix cef texture double sRGB conversion by using cef-rs fork with fix

* fix keyboard input on mac

* add missing frontend messages

* fixup

* fix keyboard input mac

* dbg

* re implement keyboard mapping

Co-authored-by: csmoe <csmoe@msn.com>

* Fix double arrow keys

* try fix for non mac

* test

* Revert "test"

This reverts commit c7cde9c597.

* fix mac

* some cleanup

* fix zoom in shortcut on mac introduced in #3377

* disable menu shortcut display

* fixup
2025-11-17 11:51:59 +00:00
Dennis Kobert
181c30bc0a Fix assorted Clippy lints (#3390) 2025-11-17 07:58:31 +00:00
Wade Cheng
94414adaf8 Add selection subtracting to the node graph view (#3290)
Add selection subtracting for node graph
2025-11-14 20:09:43 +00:00
Timon
3871b6c4cf Fix graph UI culling on-screen nodes (#3380)
* fix

* review fixup
2025-11-13 21:25:27 -08:00
Keavon Chambers
ca5785bc8f Show a "Ctrl +" label instead of "Ctrl =" for View > Zoom In (#3377) 2025-11-13 17:24:04 -08:00
Keavon Chambers
ac74bd9903 Allow the Stroke node to receive "Dash Lengths" values from the node graph 2025-11-12 01:14:17 -08:00
James Lindsay
4e65887b90 Fix the Artboard tool drawing the first artboard on an infinite canvas with layers present (#3356)
Improve creating the first artboard
2025-11-10 13:36:30 -08:00
James Lindsay
7f10a4258e Fix copying nodes sometimes failing when no OutputConnector exists (#3365)
* Fix copy nodes sometimes failing when no OutputConnector exists

* Add test for copying a node
2025-11-10 20:26:25 +00:00
James Lindsay
2f45cf7ff2 Fix invalid popup widget ids (#3354) 2025-11-09 12:07:32 +01:00
Dennis Kobert
72a291d808 Improve web frontend performance during zooming and panning (#3337)
* WIP debounce frontend ui updates

* Reduce the number of frontend updates performed

* Improve menu bar diffing

* Cleanup in dispatcher

* Fix comment
2025-11-08 14:01:11 +01:00
Timon
881ec0b193 Split out viewport handling into its own message handler (#3331)
* extract viewport handeling

* fix web overlays

* some cleanup

* remove some physical conversions

* fix resize snapping

* fixup

* apply some review feedback

* make viewport api more ergonomic

* fix

* fix web overlay canvas clear size

* clear workaround for canvas

* rename trigger message

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-11-08 08:59:38 +00:00
James Lindsay
3490111b96 Pen tool: do not merge with ancestor layer as it breaks the graph (#3347) 2025-11-08 08:29:08 +00:00
Dennis Kobert
68e67055d8 Update Linebender-related dependencies (#3349)
* Updates crates from linebender ecosystem

* Remove usages of decprecated Clip mix mode
2025-11-08 08:59:00 +01:00
Keavon Chambers
055d543117 Rename the 'Index' node to 'Index Elements' 2025-11-03 13:35:56 -08:00
Keavon Chambers
0998abdaf3 Add support for visualizing Vec<String> in the Data panel 2025-11-03 13:13:54 -08:00
skearya
c4bbb7e880 Reduce editor message size by 67% and fix simple clippy warnings (#3327)
Reduce message size and fix some clippy issues
2025-11-02 08:50:29 +01:00
James Lindsay
d919dfe757 Fix crash when resizing a deleted artboard (#3322) 2025-11-01 09:26:26 +01:00
James Lindsay
1b9a492a74 Fix crash when creating cyclic nodes (#3313)
* Fix crash when creating cyclic nodes

* Re-add the recursive set_input call
2025-10-30 13:01:45 +01:00
James Lindsay
40c6c6160b Fix snapping when drawing an artboard (#3312)
* Fix snapping when drawing an artboard

* Fix typo in test
2025-10-29 22:41:39 +01:00
Timon
5be9b1fabc Desktop: Mac native menu bar (#3301)
* macos native menu bar

* fix nix build

* Add shortcut symbols to menu

* fix fmt

* fix vendoring

* cleanup intercept frontend message

* accept into editor message in queue function
2025-10-27 14:11:24 +00:00
Dennis Kobert
e8f18b0ac0 Cache calculation of bounding boxes with transforms (#3287)
* Cache calculation of bounding boxes with transforms

* Reuse bounding boxes across for the same rotation

* Cleanup code and add documentation

* Add tests
2025-10-17 10:20:55 +00:00
Timon
3509f0b035 Desktop: Persist document path (#3272)
* persist document path

* persist data cleanup
2025-10-15 10:30:47 +00:00
Sambhram
591096a817 Exit sub-network via Escape key (#3285)
"Escape key in sub-network"

Co-authored-by: Timon <me@timon.zip>
2025-10-15 00:08:04 +00:00
Mateo
497758c273 Desktop: Add simple cli interface (#3059)
* Open document from cli and add some files to .gitignore

* Revert .gitignore

* Revert .gitignore

* Implement cli properly

* Add ui-accelerated-painting option

* Format code

* Revert changes in .vscode folder

* Don't use global variables for cli

* Apply suggested changes

* Make ready for merge

* Improve names

* remove comment

---------

Co-authored-by: Timon <me@timon.zip>
2025-10-13 21:09:40 +00:00
Trevor Paley
ca70fd8380 Add quick measurement between objects and artboards (#3274) 2025-10-12 18:14:02 +00:00
Timon
e39fbb8903 Desktop: Fix non-Vello render mode (#3259)
* fix non vello render mode

* move export overide desision from reneder node to node runtime

* fix

* cleanup

* Fix typo and cleanup export logic

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-10-09 11:31:35 +02:00
Timon
48ac24da14 Desktop: Fix frontend message response dispatch (#3247)
* One annoying debugging session later

Discovered that the editor handles frontend messages differently from other messages.
It requires all frontend messages to be fully processed before dispatching any resulting messages.

In the web frontend, this behavior happened implicitly because message dispatch is queued at the current end of the JavaScript execution queue.
For the desktop frontend, I added a vector to collect all responses until the entire batch of frontend messages is handled, and then dispatch them afterwards.

* Fix double click travel
2025-10-06 20:04:24 +00:00
Timon
7e8c6cc432 Desktop: Native export (#3188)
* Testing native export with raster convert implementation

* Jpg export

* Fix transparent export

* move texture conversion to runtime

* fixup

* move image encoding into editor export  function

* remove unused frontend message

* remove unused type
2025-10-01 21:13:40 +02:00