Commit Graph

19 Commits

Author SHA1 Message Date
Mathias Rav
3cd19f2d1d When dragging a node, don't snap its top-left corner to the cursor
Revamp the node dragging implementation, moving it into the GraphView
widget.

When a drag is initiated, the node widget's current position is stored.
Whenever the drag gesture is updated, the node widget's position is set
by adding the relative drag vector to the position at the start of the
drag.

A drag gesture on the node widget rather than the GraphView widget was
considered, but this seems to lead to a weird flickering effect when the
node is moved while the drag gesture on the node is active.

To avoid interfering with the drag handlers on the ports, check if the
GraphView drag gesture targets a port, in which case the handler does
nothing.
2021-05-10 18:21:00 +00:00
Tom A. Wagner
a5d8c871ee Update dependencies 2021-05-08 18:42:49 +02:00
Tom A. Wagner
75aa0a30d0 Turn view::port::Port into a gtk::Button subclass 2021-04-02 14:53:58 +02:00
Tom A. Wagner
2cb155c5ee view: Refactor view to have a manager View struct.
The view struct creates, manages and runs the view, and handles all communication with components outside of the view.
2021-03-31 10:44:04 +02:00
Emmanuel Gil Peyrot
279c792345 Update to build with latest glib
glib replaced its glib::object_subclass!() macro with
a #[glib::object_subclass] attribute, to simplify a bunch of things.

See fdc8459b39
2021-03-14 00:25:08 +01:00
Guillaume Desmottes
5784275d32 fix clippy warnings 2021-02-14 17:24:49 +01:00
Tom A. Wagner
5ac535ab37 Prevent nodes from being dragged out of the graph view 2021-02-10 10:58:01 +01:00
Tom A. Wagner
5bf62eca6e Use log, env_logger crates to log warnings instead of using eprintln!() macro 2021-01-12 09:48:59 +01:00
Tom A. Wagner
181661a2db Delete items from graph when they are removed by the pipewire server. 2021-01-08 12:34:22 +01:00
Tom A. Wagner
4744a1a647 Check that a widget is being dragged before checking the event in graphview.
A bug in gtk4-rs makes the library print errors when accessing an event, this change reduces the amount of errors, as they are only printed when the mouse is over a node now.
2021-01-08 09:57:25 +01:00
Tom A. Wagner
323e1a2a8f Refractor graphview.rs by moving accessor functions into wrapper type. 2021-01-08 09:56:36 +01:00
Tom A. Wagner
0e5b9bb1bc Remove unnecessary snapshot downcast into itself 2021-01-07 17:44:23 +01:00
Tom A. Wagner
f1b66d9c53 Turn Node into a gtk::Frame subclass. 2021-01-07 17:42:37 +01:00
Tom A. Wagner
9262308d28 Improve theming
Default to a dark theme and draw a grid on the background of the graphview
2021-01-05 11:24:49 +01:00
Tom A. Wagner
2897543acf Switch to gtk4 2021-01-05 09:46:34 +01:00
Tom A. Wagner
b129d84fa2 Display Nodes/Ports/Links obtained from pipewire server 2021-01-03 19:01:47 +01:00
Tom A. Wagner
438383e92f Render links as a curve instead of a straight line 2020-12-17 11:27:06 +01:00
Tom A. Wagner
c72bef364d Run rustfmt on the codebase 2020-12-14 11:28:06 +01:00
Tom A. Wagner
264ccf0982 Add initial project. 2020-12-14 11:20:29 +01:00