Closed rcarmo closed 2 years ago
@rcarmo Any reason of not using the windowDidMove
event which is triggered if any window moved?
Well, duh. Other than documentation, I guess not. It's really not that easy to figure out how to do some things, I just scrolled past it.
Noted. My plan definitely is to improve the documentation when I have some time and I’m looking into adding https://docusaurus.io to the mix.
Well, I can try to donate a few snippets to get things started. Code examples are probably the best accelerator to actually spot what can be done.
There’s more examples here: https://github.com/kasper/phoenix/wiki
In the meantime I started playing around with this:
class Drag {
constructor() {
this.active = false
this.event = null
this.overlay = Modal.build({
text: "foo",
icon: App.get('Phoenix').icon(),
appearance: HINT_APPEARANCE,
duration: 0
})
} // constructor
move(window) {
window.log()
this.overlay.attach(window)
this.overlay.show()
}
toggle() {
if(this.active) {
Phoenix.notify("off")
this.active = false
this.event.disable()
this.overlay.close()
} else {
Phoenix.notify("on")
this.active = true
var self = this;
this.event = new Event("windowDidMove", (win) => {
self.move(win)
})
}
} // toggle
}
const DragManager = new Drag()
Key.on("space", ["option", "shift"], () => DragManager.toggle());
...and it has a few issues. Of course I get every single move event (including when I move windows with hotkeys) and I still have to try to correlate that with mouse events and figure out if the mouse is over the moving window and with. button down (which I've yet to do), but it is a start.
This is a follow-up to #262 as a feature request, since I've been spending some time trying to use the mouse drag events (which only work horizontally, but that's besides the point) but can't find a working strategy for detecting window dragging accurately.
Iterating through all windows is fallible when there are overlaps, and trying to figure out if the mouse is dragging atop the titlebar of a window by coordinates alone is... highly fallible as well.