-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature: Detach window #3532
base: master
Are you sure you want to change the base?
Feature: Detach window #3532
Conversation
016df50
to
cfed76a
Compare
Wow! That's really awesome! |
Very useful functionality especially when using multi-monitor setup! 👍 I played a little bit with it and found some bugs:
LMMS 1.2.0-rc2.153 |
@karmux Thanks for testing! I'll have a look at the issues you pointed out as soon as I find the time. I already noticed number 2 (X-button doesn't work), but couldn't find the cause. |
This is super useful!! I can't seem to make a windows build of it though. The build seems to go without a hitch, but when I open the app, it doesn't have the detach button. This might be my own error, but maybe someone else should look into it. I can confirm all the issues that @karmux pointed out. Also, getting the detached window back into lmms is a little unwieldy. I basically need to re-open the window (for exmaple, clicking the FX-Mixer button to re-attach the FX-Mixer). Not exactly a bug, but it would be useful if the minimize button reattached the window, or if there was another button entirely. Good job, looking forward to be able to use this for major producing :) |
Sorry for the bump. PS: Sorry to bother... |
@NickAcPT Yeah, my idea is that since the minimize button reattaches, they wouldn't have to add another button. The minimize button on the main LMMS window should probably shrink all child windows so there is a way to minimize them. |
Now we've, so I think we can continue working on this.
It's already fixed.
I guess the event is propagated to |
Found some more issues:
|
If the minimize button is used for attaching, wouldn't it be confusing? Also, I can't find platform-independent way to add such a button to the title bar unless we create a custom window class which would be quite difficult. There's an easier workaround, wrapping window content and window controls in a layout. It might be a little bit ugly, but it's easy. @lukas-w may I continue this work? |
Go for it. 👍 |
cfed76a
to
0b5eae1
Compare
Fixed almost all bugs reported by @karmux. As a side effects, minimize button doesn't re-attach windows anymore. I can restore the behavior, but I think that might be confusing. |
I think that's correct. IIRC I copied some code from instrument track and it had some issue(fixed in this PR). |
It never did. This was just suggested by @Jousboxx in #3532 (comment). |
hello, |
@pwepwe973 This feature is in development and not a part of released versions. Sorry. |
thank you
thank you for your message |
@PhysSong Can you please summarize the current state of this? Is it ready to be merged? I'm willing to help get this finished if possible. |
I unintentionally abandoned this one, but I can restart working on this.
Not yet, mainly due to #3532 (comment). |
I have no idea either. I guess we should ask @messmerd ? |
@SpomJ Since you've been working on this feature (thank you by the way!), I think it's up to you which branch(es) you want to contribute to. I'm just happy to see progress on this, so I'm fine with either option. |
@lukas-w Your |
I think I'd like to get rid of attach-on-show behavior we currently have, however that poses another question. How should we return the window back? Most WMs lack a dedicated attach button. Setting up a keybind is the most elegant way I see, however as for now, LMMS lacks a dedicated shortcut setter and we'd need to clarify somewhere that it exists at all. I'd be happy to hear your opinions on this one. Edit: I have a working commit for this, and even appears to fix the mentioned issues with controller rack (it seems calling |
The controller rack behavior also seems really weird, and I don't know what's causing it. It loads fine, but then snaps the subwindow to what appears to be embed size for no apparent reason. My commit is apparently a workaround for this, but that shouldn't be happening in the first place. |
Yeah I'm not very fond of this either, it was a poor choice but at the time felt like the easiest solution without introducing more complex changes. Some ideas that come to mind that may be better:
I think 1. is the sanest choice here because it's very simple, would work on any desktop / window manager and while I don't know if I'd call it intuitive, users will probably discover it quickly which can't be said about the current solution at all. The downside being that users who actually want to get rid of the window altogether will have to click twice.
We can't just pull because #7586 is rebased on a newer |
This would actually be really nice if it could be toggled in settings. If only we had actual settings...
This one is... interesting. Client-side decorations are a thing, and would probably work beautifully if implemented properly. I have two complaints against this, however. First, it would probably take a bit of unnecessary boilerplate, if Qt can make this happen at all. And second, I rely on tiling WMs and consider title bars ugly :]
at this point it would be easier to just get rid of So out of all these the most pleasing to me (i'm biased btw) is a shortcut, although again adding shortcuts without a way to change them makes me sad. If I understood you correctly, you essentially want to make close button an attach one, which would be nice aside from the fact it would require patches for non-persistent things (like microtuner) where closing them makes more sense (and therefore makes the code just so slightly more obese). |
Do as you please (and on the way you can squash two commits where I screwed up size constraints on itw and almost immediately patched it afterwards :) I'm happy to contribute to whatever branch I have write access to. |
Regarding remaining issues. I'll reiterate my thoughts on resizing issues. For whatever reason SubWindow (actually, widget minimalSizeHint) does not respect the widget's size constraints, and only snaps to requested size once moved/resized by user. Calling This is what caused "Add" on controller rack not to be visible, resulting in me using a bad workaround, and this is what causes constraint issues specifically on SlicerT which I tried solving for several days at this point and intend to give up soon. I could use the same workaround, but this doesn't get us anywhere in the long run, since at the end of the day it is still very much a workaround. I have no clue on how to fix this, and apparently no one in #dev-support either cares or knows either. Other than that, basically no issues remain. I can't test the icons thing, so I'm probably the last person to fix it. The attachment thing seems to be a design decision, and can be reverted with relative ease in favor of anything we discussed. So ignoring the first part, this is pretty much one step away from being mergeable. |
Same. I don't mind a slim bar though if it provides important application features. Firefox draws its own title bar and it never bothered me because it actually has a purpose by integrating the tab bar. If it didn't it wouldn't be possible to attach a single tab window back into another one so that's a win to me.
This would be awesome for us two tiling window manager users out there but a GIMP-2.0-trauma-triggering constant-window-misplacing nightmare for everyone else. 👻 |
can i haz write access to this |
I submitted a PR (#7592) to this, fixing wayland misbehavior. |
I fixed all the bugs I know of and can test. It's probably best to leave attachment behavior as it is, at least for now. We could probably hook attachment to minimize button instead, if there even is a call for that. I'd mainly go for shortcuts, but there's ongoing work on them, so it's probably best not to touch it for now. I can't check anything about window icons, since y'know, wayland. From further testing the best I can do about window constraints is set up a helper function which syncs them since setting either of these is not sufficient and there doesn't seem to be a way to dynamically infer one from another. Is there anything that prevents this from exiting the draft stage? |
@SpomJ The taskbar icon bug isn't occurring for me anymore, at least when I built this branch locally with Qt 5.15.2. Maybe it was a Qt bug that got fixed upstream, or your changes fixed it somehow. |
The only bug I've found so far is that |
What are those windows? Only thing I know of still doing this is SlicerT and it seems to be reworked anyways, so I think tweaking it now would do more bad than good. |
SlicerT, Microtuner config, and the LADSPA plugin browser. And Tap Tempo is resizable when detached but it shouldn't be. |
Found some more windows with resizing issues: |
Disregard all my previous whines about SubWindows being broken. Turns out all I needed was layout SizeConstraint on SubWindow. I submitted a pr for this (#7596). |
I should have fixed SlicerT, Microtuner, LadspaBrowser and Tap Tempo. Regardng VSTs - Rack appears to wannabe-constrained (and thus, not intended to maximize) which is weird, considering its max size is strictly below its scroll area width (same applies to mixer btw). I also lack any embed protocols to test how VST windows behave. Not sure what you mean by {VST,LADSPA} effect windows?? |
I also just discovered that setting fixed width does not prevent maximizing. Oh well, what a great thing Qt is. |
Allows detaching a window from LMMS's main window, making things like working on multiple screens easier.
Closes #1259
Quick demonstration:
Edit: This uses some Qt5-only features, so it's best to wait with merging this until we've switched (#2611).