linebender / linebender/druid

Zooming Container

Open
#1,889 13 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
9.7k
Forks
565
PR merge metrics
No merged PRs in 30d

Description

I've been working on a tree based task management app in druid that has a component which allows placing and moving of widgets on an infinite canvas. It looks something like this:
![image](https://user-images.githubusercontent.com/3323631/128063220-de787199-dcd8-4146-976d-0b74020717d3.png)

This works great modulo some performance issues, but I can't figure out how to implement zooming of the canvas. I've seen some requests and suggestions that such a thing should exist, but I haven't seen any suggestions for how it should be implemented. I'm guessing it would require modifying of events before passing them to child widgets and some trickery with the paint context.

I'm interested in working on such features. Does anybody here have any suggestions for how to get started on such a thing?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by investigating how events are passed to child widgets and how the paint context is used for the infinite canvas described in the issue. Define the zooming behavior and coordinate transformations before determining what implementation and validation would be needed.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.