Commit Graph

85 Commits

Author SHA1 Message Date
Keavon Chambers
f1e8ebefc5 Improve tooltip docs with Markdown styling and refined math node explanations (#3488) 2025-12-20 01:05:15 -08:00
Keavon Chambers
2d6d054359 Make font selection show a live preview on hover; move its code to the backend (#3487)
* Remove FontInput.svelte

* Move font picking to the backend

* Fix Text tool font choice style turning to "-" on font that doesn't support previous style
2025-12-19 22:17:28 -08:00
Timon
6d852f11af Desktop: Text clipboard support (#3461)
* gray background for viewport texture

* cust copy paste support

* connect clipboard read on web

* fix eyedropper bounds

* cleanup

* add missing char events for some named keys like enter
2025-12-12 00:16:35 +00:00
Keavon Chambers
fb0fab0622 Update links from graphite.rs to graphite.art 2025-12-06 18:10:27 -08: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
Keavon Chambers
8cebde76e2 Add support for RMB/Escape canceling layer drag reordering in the Layers panel (#3426)
* Add support for RMB/Escape canceling layer drag reordering in the Layers panel

* Disable hover effects on layers during drag; fix insertion line getting cut off at top of stack
2025-11-27 03:10:33 -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
12453d2e61 Make the welcome screen not include Alt in Ctrl+Alt+N on desktop 2025-11-17 15:26:23 -08: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
Timon
f02f834097 Desktop: Add support for UI scaling (#3310)
* desktop support ui scaling

* fix some warnings

* use browser zoom if needed

* fix infinite footprint size

* fix web canvas scale

* always set zoom

* use only zoom for scaling

* prevent user zoom

* remove mouse position scaling
2025-11-08 12:32:04 +01:00
Timon
d15f63f4fd Ensure the LoadPreferences message is dispatched with None when no preferences exist (#3198)
* preference load message on default load

* review fixup
2025-09-23 20:19:16 +00:00
Timon
083dfa5f49 Clean up autosave persistence (#3115)
* Set auto save state to false on document rename

* Update open document list on transaction commit and aboard

* Use current network to compute hash

Was using the last element in undo
Before artworks where not auto saved when the had no undo history

* Refactor persistence
2025-09-02 13:27:38 +00:00
Timon
e70862b399 Desktop: Add File > Save As… (#3034)
* Make file name and document name identical

* Add save as action

* Fix test errors

* Add missing save as action

* Desktop fix drop file open document file message

* Address review comments

* Replace file save suffix with file extension

* Add comment specifying that the upload function takes a html input accept string

* Fix remove file extension in web

* Use let

* Don't show save as menu entry in web

* Don't add SaveDocumentAs in web

* Remove file extension on all open document file calls

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-08-20 10:09:01 +00:00
Keavon Chambers
6dd17f76c1 Fix pointer offset from viewport position 2025-08-05 03:26:09 -07:00
Adesh Gupta
b9a1b2e951 Add copy/cut/paste/duplicate functionality for path geometry (#2812)
* Copy and Paste for paths

* Fix merge

* Implement Copy, Cut and Duplicate

* Fix selection of segments

* Fix formatting

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-02 21:15:01 +00:00
Keavon Chambers
66cd7a3b76 Desktop: Add the transparent viewport hole punch and hook up window button plumbing (#2949) 2025-07-28 02:13:32 -07:00
Keavon Chambers
f299497090 Add shaking input gesture to disconnect a node being dragged (#2889)
* Add shaking input gesture to disconnect a node being dragged

* Improve shake detection algorithm

* Fix reconnection

* Improve shake reconnect logic

* Fix history

---------

Co-authored-by: Adam <adamgerhant@gmail.com>
2025-07-19 02:11:52 -07:00
Keavon Chambers
c1b15fcfdf Fix Ctrl+Space not closing the graph after opening the node creation menu 2025-06-22 03:29:41 -07:00
Keavon Chambers
dc0ae74cab Fix double-click event firing when dragging number input fields in Chromium 2025-06-22 03:11:57 -07:00
0SlowPoke0
ddb2d744d4 Make the Path tool support multi-point conversion between smooth/sharp on double-click (#2498)
* kinda works

* solved merge conflicts

* implement the multi flip

* nit-picks

* removed extra functions

* Fix inputs not being passed to backend for repeated double-clicks

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-19 22:11:38 -07:00
mTvare
2d18378823 Fix autosaved document ID being incorrectly added to browser storage at the wrong time without its document data (#2426)
* Remove deleted document instead of fetching documents in portfolio

* npm run lint-fix

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-03-13 00:54:52 +00:00
Keavon Chambers
a696aae044 Instance tables refactor part 5: unwrap GraphicGroup as multi-row Instance<GraphicElement> tables and move up transforms (#2363)
* Just group

* Partly working but without transforms

* Remove Transform/TransformMut from GraphicElement and GraphicGroupTable

* Fix layers and flattening

* Fix transform group handling on the remaining nodes

* Change collect metadata

* Add transform on vector data. TODO: Remove duplicate transform

* Small code tidying-up

* Add concatenate node?

* Remove ignore_modifications which is always false

* Improve transforms

* Mostly fix the nested transform cage angle (except leaf layers and skew)

* WIP attempt to integrate skew

* Fix nesting bounding box

* Avoid setting the transform

* Fix stroke transforms

* Renderer cleanup

* Fix tests for repeated elements not given unique point IDs

* Suppress cargo-deny warning

* Fix upgrade code for graphic group data

* Work around rendering issue in Isometric Fountain

---------

Co-authored-by: Adam <adamgerhant@gmail.com>
Co-authored-by: hypercube <0hypercube@gmail.com>
2025-03-12 01:38:36 -07:00
Keavon Chambers
ec8c8d6485 Polish and add aborting to several input widgets: no Esc closing parent menus; color picker axis align; repeat on arrow buttons (#2276)
* Remove color input outline; reduce antialiasing compositing artifacts in color widgets

* Rename ColorButton to ColorInput

* Add features and aborting to several other widgets

- Prevent Esc from closing parent floating menus when aborting
- Fix missing icon regression
- Gutter resizing abort
- Color picker aborts, Shift axis alignment, improve click/drag behavior for gradient spectrum
- Scrollbar abort, repeat when held, fix directional arrows when viewport is zoomed
- Number input abort, repeat when held

* Move ColorInput into the inputs folder

* Fix tiny logo
2025-02-10 05:46:41 -08:00
Keavon Chambers
0037f5158c Add new icons to all menu bar entries 2025-02-07 19:08:06 -08:00
mTvare
9954e49530 Make the document auto-save system initially restore the last-viewed tab before loading the rest (#2194)
* Fixes last tab being opened instead of last active tab

Fixes https://discord.com/channels/731730685944922173/881073965047636018/937518022548131891

* Defers node initialisation to SelectDocument message instead of load_document

* Fix warning regarding attempt to load closed document

* Defer loading resources and running nodes to selection time

* Make last active tab load before others

* Load last active saved document instead of last autosaved doc

* Fix failing tests

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-01-25 06:41:47 +00:00
Keavon Chambers
9ad6c31483 Remove blob URL dead code and clean up more frontend code (#2199) 2025-01-14 13:08:47 -08:00
mTvare
d692538736 Make the Text tool delete empty text layers when clicking away wth LMB (#2192)
Fix additions of layers when using left click

Fixes: https://discord.com/channels/731730685944922173/881073965047636018/1327376421034922045
2025-01-12 18:17:44 -08:00
Sidharth-Singh10
f225756655 Fix text layer getting deselected after clicking out of Text tool interactive editing (#2144)
* properties panel remains active when user edits text layer

* Keep text layers selected after editing

* Update editor/src/messages/portfolio/document/document_message_handler.rs

* Delete Empty Text Layer on Escape or Right Click

* Fix: delete empty text layer on right click

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2024-12-31 14:28:56 -08:00
James Lindsay
5aa6716910 Add a node insertion button and layer renaming from the Properties panel (#2072)
* Add node button

* Improve css a bit

* Add layer renaming to the Properties panel and move New Layer to that, plus add unpinning to properties sections

* Add tooltip

* Re-add layer itself in listing

* Final code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2024-10-25 23:58:34 -07:00
Keavon Chambers
904cf09c79 Add drag-and-drop and copy-paste file importing/opening throughout the UI (#2012)
* Add file importing by dragging and dropping throughout the UI

* Disable comment-profiling-changes.yaml

* Fix CI
2024-09-28 00:19:43 -07:00
adamgerhant
9adc640f19 Improve layer positioning in graph upon reordering; improve history system; add selection history (#1945)
* Improve layer positioning

* Collapse space when deleting

* Improve moving layers in layer panel

* Improved transactions

* Selection history

* Code review

* Select previous selection when aborting

* Fix crash and artboard select

* Add mouse forward/back button selection history bindings

Code review

* Menu buttons

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2024-09-01 02:34:18 -07:00
Keavon Chambers
06177597ae Fix viewport bounds getting out of sync at times, like when toggling rulers 2024-07-28 05:42:27 -07:00
adamgerhant
02360c7bc8 Migrate node graph UI interaction from frontend to backend (#1768)
* Click node using click targets based

* Display graph transform based on state stored in Rust, fix zoom and pan.

* Migrate node selection logic

* Move click targets and transform to NodeNetwork

* Keep click targets in sync with changes to node shape

* Click targets for import/export, add dragging

* Basic wire dragging

* complete wire dragging

* Add node selection box when dragging

* Fix zoom operations and dragging nodes

* Remove click targets from serialized data, fix EnterNestedNetwork

* WIP: Auto connect node when dragged on wire

* Finish auto connect node when dragged on wire

* Add context menus

* Improve layer width calculations and state

* Improve context menu state, various other improvements

* Close menu on escape

* Cleanup Graph.svelte

* Fix lock/hide tool tip shortcuts

* Clean up editor_api.rs, fix lock/hide layers

* Start transferring network and node metadata from NodeNetwork to the editor

* Transfer click targets to NodeGraphMessageHandler

* Fix infinite canvas

* Fix undo/redo, scrollbars, and fix warnings

* Unicode-3.0 license and code cleanup

* License fix

* formatting issue

* Enable DomRect

* Fix layer move crash

* Remove tests

* Ignore test

* formatting

* remove white dot

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2024-06-15 08:55:33 -07:00
Keavon Chambers
1ce3d59e0f Fix breakage of About Graphite dialog from editor instances refactor 2024-05-07 01:06:14 -07:00
Keavon Chambers
19eb6ce0ab Remove editor instances concept and clean up JS interop code 2024-04-29 04:17:09 -07:00
0HyperCube
b31e8f7b6d Make menu lists searchable (#1499)
* Searchable font list

* Bug fixes and UX polish for edge cases

* More work, still more bugs to fix

* Don't update highlight when not open

* Bug fixes

* Additional bug fixes and code review

* Fix keyboard input being sent to backend

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2024-03-09 10:58:13 +00:00
Keavon Chambers
8a6854e55b Fix long crash stack traces breaking the GitHub URL 2024-01-28 19:25:27 -08:00
0HyperCube
002151d9c0 SVG import (#1579)
* SVG import

* Fix error

* Transforms

* Code review nits

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2024-01-16 17:42:48 -08:00
Keavon Chambers
7998947202 Remove GRAPHITE_DOCUMENT_VERSION 2024-01-06 17:25:05 -08:00
Keavon Chambers
7bfe0ce55b Retire layer paths used throughout the code (#1531)
* Part 1

* Part 2

* Part 3

* Part 4

* Part 5

* Part 6

* Part 7

* Part 8
2023-12-21 19:32:46 -08:00
Keavon Chambers
719c96ecd8 Rename and reorganize several widgets (#1462)
* Rename SwatchPairInput -> WorkingColorsButton

* Remove unnecessary Svelte each-loop keys

* Rename (and migrate) MenuBarInput -> MenuListButton

* Rename PivotAssist -> PivotInput

* Rename PersistentScrollbar -> ScrollbarInput and CanvasRuler -> RulerInput

* Rename DIalogModal -> Dialog

* Rename WidgetRow -> WidgetSpan
2023-11-18 04:34:30 -08:00
Keavon Chambers
a6ca43bb2d Restore ESLint and Prettier auto-formatting and CI linting (#1457)
* Restore ESLint and Prettier autoformatting

* Fix formatting and lints in web files

* Hacky fix to eslint crash

* Fix remaining lints

* Add lint-fix script

---------

Co-authored-by: 0hypercube <0hypercube@gmail.com>
2023-11-16 13:12:47 -08:00
Matthew Donoughe
f6d104265a Switch build system to Vite (#1444)
Switch Parcel to Vite
2023-11-05 03:12:03 -08:00
Keavon Chambers
ee1a228bfd Fix regression blocking inputs in the graph 2023-09-02 00:19:03 -07:00
Keavon Chambers
b30488bbb7 Add support for handling MMB/RMB double click inputs (#1407)
* Add support for handling MMB/RMB double click inputs

* Add todo comment

* Enforce types

---------

Co-authored-by: 0hypercube <0hypercube@gmail.com>
2023-09-01 14:57:03 -07:00
Keavon Chambers
a112ab27cf Dialog redesign and content revamp (#1409)
* Revamp the content and design of dialogs

* Add the Licenses dialog
2023-09-01 01:58:20 -07:00
Keavon Chambers
0e97a256b7 Fix node colors; fix spacebar not closing graph 2023-08-20 23:32:27 -07:00
Keavon Chambers
185106132d Move node graph from panel to overlay on viewport 2023-08-19 01:21:37 -07:00
Keavon Chambers
f429db6369 Revamp the Graphite website (#1265)
Revamp the website with more content
2023-08-10 18:37:04 -07:00
Chase
05f58f4ca1 Allow right clicking in text fields (#1207)
* Allow right clicking in text edit

* Cleanup

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-05-12 13:55:03 +08:00