Lmms: Graphical update missing on maximize

Created on 20 Jan 2014  路  21Comments  路  Source: LMMS/lmms

Simple glitch: When maximizing, any block on the Song Editor that goes past the window's previous size will not be rendered. The window can be updated by simply moving a track to another place, though.
To reproduce:

  1. Have several instruments and blocks of notes on the Song Editor.
  2. Shrink the Song Editor to the smallest size possible.
  3. Maximize.
  4. If you can't notice any missing note blocks, just focus your eyes on a blank spot, move a track out of place, and you should spot the missing blocks pop up into view.
bug gui

All 21 comments

Can't reproduce. Is this still an issue? If not, close...

anyone? @eagles051387?

This issue came over from SF issue tracker. So I am not sure if it is or
not.

On Thu, Feb 20, 2014 at 5:46 AM, Paul Giblock [email protected]:

anyone? @eagles051387 https://github.com/eagles051387?

Reply to this email directly or view it on GitHubhttps://github.com/LMMS/lmms/issues/70#issuecomment-35589041
.

Jonathan Aquilina

Closing this due to lack of information and reproducability.

I can reproduce this on LinuxMint-17.3/Qt4, LinuxMint-18-3/Qt5, Metacity window manager and just about any lmms version down to 0.4.90.

_Edti: ^System info updated_

  • Launch lmms
  • Open Demos->Skiessi->RandomProjectNumber14253

Open
skiessi

Maximize
missing

Move horizontal scrollbar
skiessi3

If I drag the Song-Editor down/left so the window is ever so little outside of the canvas and then maximize it, the full song is showing.

_Edit: Actually. Any project component going over the canvas border prevents the issue to appear. If you resize the Song-Editor to fit within the canvas you'll see the issue but just open an instrument plugin/mixer and drag it over the canvas edge and maximize the Song-Editor and it will open up just fine_

Could be an issue with x11. https://doc.qt.io/archives/qt-4.8/application-windows.html#window-geometry

Nor does X11 provide a way to maximize a window. QWidget::showMaximized() has to emulate the feature. Its result depends on the result of QWidget::frameGeometry() and the capability of the window manager to do proper window placement, neither of which can be guaranteed.

Actually, its the whole win-border that is 'gone'
Look at this picture
songeddnomaxwinborder

There are two states on the same picture. Top you see that if a right-ckick is done on the win-border, lmms shows a context menu.
Not 'shown' is the fact that a double-click will anywhere on this border, will maximize song-editor.
Second part shows the window maximized. It is now not possible to get a context-menu, nor will double-click toggle the size.
All expected win-border features are missing.
This is also the case for

  • piano-roll
  • B&B
  • Aut

But not project-notes!
The other 2 sub-windows rack & mixer has maximizing disabled

All expected win-border features are missing.

Under what circumstances? Sorry, I don't get your post. I see no context menu related issues.

@zonkmachine > Under what circumstances?

with maximixed windows. I showed the 'context-thing' because it is a normal windows-feature, that a context-menu, can be accessed with right-click, nomatter if the window is popped out, or maximized. The picture shows, that in lmms, only popped-out windows has a normal windows-top-bar. Maximized windows does not have this normal windows-bar, in lmms.

@musikBear This issue is about song elements not showing up when you maximize the Song-Editor. The issue only appear when all elements on the canvas, prior to maximizing, is within the canvas.
Do you see this precise issue on Windows?

@musikBear I understand what you mean now. It's a completely different issue and by design. Now back to the original topic... please confirm if you see this issue or not.

@musikBear I've updated the middle picture in my comment above for clarity.

I can confirm on Windows.
LMMS 1.2-rc5 x64 (from the website)

Edit: But only for the first time going fullscreen in the session. After I already was fullscreen, it does not work even when loading a new project until I restart LMMS completely.

OK. So it's our issue then. Poked it some more...

If I stick updateGeometry(); first in this function the issue seem fixed.
Edit: Error on testing. Change had no effect.

@zonkmachine -Yes i have experienced invisible blocks, but they did replay, and toggling song-editor up-down or dragging an other window over the invisible blocks, made them re-appear. so indeed a graphical glitch, witch is loosely connected to toggled sub-windows.
I dont think i have seen this in RC's since 1.1.3, but that may be because i by rule, only saved projects, with all windows closed! (And could use a 'shut-all-open-windows' button :'P )

So the 'odd' windows-tittle-bar behaviour is by design? ..Hmm

I dont think i have seen this in RC's since 1.1.3, but that may be because i by rule, only saved projects, with all windows closed!

The question still stands. Can you replicate the issue with the given steps? No guessing or anecdotes from earlier versions. lmms-1.2.0-rc5.

  • Restart LMMS
  • Open a large project
  • All windows closed except Song-Editor
  • Adjust the size of the Song-Editor to be within the canvas
  • Maximize the Song-Editor

Do you see missing blocks. Yes/No?

Yes (win32 sp3 xp RC5.6545
disapearedatmaximixe
That single block is all i have, after smallest possible song-ed. window, is maximized. You are correct!

TrackContentWidget::changePosition is called when the viewport for song editor changes. It hides invisible TCOs(actually moves TCOs to outside of visible area).
However, the function isn't called when the window is maximized/restored.

This change should work:

diff --git a/include/SongEditor.h b/include/SongEditor.h
index db4d7d781..e03c63280 100644
--- a/include/SongEditor.h
+++ b/include/SongEditor.h
@@ -155,6 +155,7 @@ public:

 protected:
    virtual void resizeEvent( QResizeEvent * event );
+   virtual void changeEvent( QEvent * );

 protected slots:
    void play();
diff --git a/src/gui/editors/SongEditor.cpp b/src/gui/editors/SongEditor.cpp
index 5eb7ff6e2..2e0a19ab4 100644
--- a/src/gui/editors/SongEditor.cpp
+++ b/src/gui/editors/SongEditor.cpp
@@ -723,6 +723,13 @@ void SongEditorWindow::resizeEvent(QResizeEvent *event)
 }


+void SongEditorWindow::changeEvent(QEvent *event)
+{
+   QWidget::changeEvent(event);
+   m_editor->realignTracks();
+}
+
+
 void SongEditorWindow::play()
 {
    emit playTriggered();

@zonkmachine can you test this?

@zonkmachine can you test this?

Worked! I haven't tested it extensively (from lack of computer power for the moment) but this seem to fix the issue right up!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

DomClark picture DomClark  路  3Comments

DeRobyJ picture DeRobyJ  路  3Comments

Firepal picture Firepal  路  3Comments

victor00101 picture victor00101  路  3Comments

Gabrielxd195 picture Gabrielxd195  路  3Comments