* Colors > Edit Colors... doesn't work when the $colorbox is hidden
* Component windows are gone forever once closed
* Status text gets cut off
* Also, it should gracefully push the dimension displays off the edge instead of covering up the text with usually blank space
* Firefox
* It lags unusably when using tools
* For some tools it only happens while dragging the mouse on the canvas
* Tool options that have images flicker... *and lag*
* Airbrush options aren't inverted when selected because `filter: invert()` doesn't work yet in Firefox
* Invert the image with canvas
* Make class $UpscaledCanvas or something that I can also use to make lots of things crisp and pixely when zoomed in and on higher resolution displays
* Global event handlers interfering with stuff
* (In Image > Attributes)
* You can't Copy, Paste, Cut or Drag&Drop in the inputs
* You can't click on the radio option labels when text is selected!
* Handling actions that interfere with each other
* I currently have a function `this_ones_a_frame_changer();` that finalizes the selection among other things at various times (undo, redo, reset, file_open, ... switching between frames of an animation)
* MS Paint disables actions while you're drawing. Maybe I should do that? It does allow actions when you have a selection and finalizes it as I am doing.
### Menus
* Mouse navigation ✓
* Keyboard Navigation
* Descriptions of menu items in the status bar
* Use keyboard shortcuts defined in the menu data structure to declaratively setup hotkeys
* ```
On key press, loop through the menus
If the key event matches the menu item's shortcut
Perform menu item's action
Break loop
```
* Enable items (Repeat, Clear Selection, Copy To...) when they are applicable
* Disable Image > Clear Image when there is a selection like mspaint does?
* Sliding animation / transition effects
* Menu Items
* File
* Print Preview
* Page Setup (what should these do? call `print`?)
* APNG Library ([this kickstarter wants $15,000 to make this](https://www.kickstarter.com/projects/374397522/apngasm-foss-animated-png-tools-and-apng-standardi))
* Multi-size Icons
* Windows ICO ([jBinary can read](http://jdataview.github.io/jBinary.Repo/demo/#ico) and presumably write ICO files)
* Rectangle: The stroke should go within the rectangle
* Rounded Rectangle / Ellipse:
* If the width/height is less than the stroke size, it should a shape with no stroke, filled with the color that would normally be used for the stroke.
* Publish jspaint to the webstore (and link to that)
* Make it pretty with (moar) images
* Stop improving TODO
* It's just a TODO
* You're wasting your time
* Why did I make this a markdown document?
* Work on the project
* CSS
* Buttons shouldn't need a class `.jspaint-button`
* Color cells probably shouldn't be buttons
* There also shouldn't be classes `.jspaint-window-button` (`.jspaint-window-titlebar button`) or `.jspaint-dialogue-button` (`.jspaint-window-content button`) at all
* DRY, especially for the buttons
* Move into folder (called what? styles? stylesheets? css?)
* JS
* Selection.js and TextBox.js contain a lot of duplicated code.
* Outdated names like sel.$ghost = div.jspaint-selection
* Everything is in random files! functions.js, REALLY? menus.js contains way too much non-menu stuff.
* $Window has a $Button facility; $FormWindow overrides it with essentially a better one