From 6be555d61a627e3188b0c6e36e4bb6f4ab499589 Mon Sep 17 00:00:00 2001 From: Tobias Doerffel Date: Wed, 5 Jan 2011 11:53:56 +0100 Subject: [PATCH] SongEditor: always bring up to front after loading a project When just opening a song in order to listen to it, it's very annyoing to manually bring up the song editor each time, therefore do it automatically. --- include/song.h | 4 ++-- include/song_editor.h | 4 +++- src/core/song.cpp | 8 +++----- src/gui/song_editor.cpp | 24 +++++++++++++++++++++++- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/include/song.h b/include/song.h index 8330453be..52d5dd83a 100644 --- a/include/song.h +++ b/include/song.h @@ -1,7 +1,7 @@ /* * song.h - class song - the root of the model-tree * - * Copyright (c) 2004-2009 Tobias Doerffel + * Copyright (c) 2004-2011 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -22,7 +22,6 @@ * */ - #ifndef _SONG_H #define _SONG_H @@ -312,6 +311,7 @@ private: friend class ControllerRackView; signals: + void projectLoaded(); void lengthChanged( int _tacts ); void tempoChanged( bpm_t _new_bpm ); void timeSignatureChanged( int _old_ticks_per_tact, diff --git a/include/song_editor.h b/include/song_editor.h index 04a3325f3..3321fce06 100644 --- a/include/song_editor.h +++ b/include/song_editor.h @@ -2,7 +2,7 @@ * song_editor.h - declaration of class songEditor, a window where you can * setup your songs * - * Copyright (c) 2004-2009 Tobias Doerffel + * Copyright (c) 2004-2011 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -86,6 +86,8 @@ private slots: void zoomingChanged(); + void adjustUiAfterProjectLoad(); + private: virtual void keyPressEvent( QKeyEvent * _ke ); diff --git a/src/core/song.cpp b/src/core/song.cpp index 551b643b3..504af34fc 100644 --- a/src/core/song.cpp +++ b/src/core/song.cpp @@ -1,7 +1,7 @@ /* * song.cpp - root of the model tree * - * Copyright (c) 2004-2010 Tobias Doerffel + * Copyright (c) 2004-2011 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -983,6 +983,8 @@ void song::loadProject( const QString & _file_name ) engine::projectJournal()->setJournalling( true ); + emit projectLoaded(); + m_loadingProject = false; m_modified = false; @@ -990,10 +992,6 @@ void song::loadProject( const QString & _file_name ) { engine::mainWindow()->resetWindowTitle(); } - if( engine::getSongEditor() ) - { - engine::getSongEditor()->scrolled( 0 ); - } } diff --git a/src/gui/song_editor.cpp b/src/gui/song_editor.cpp index 3cc8e8b03..139928400 100644 --- a/src/gui/song_editor.cpp +++ b/src/gui/song_editor.cpp @@ -1,7 +1,7 @@ /* * song_editor.cpp - basic window for song-editing * - * Copyright (c) 2004-2009 Tobias Doerffel + * Copyright (c) 2004-2011 Tobias Doerffel * * This file is part of Linux MultiMedia Studio - http://lmms.sourceforge.net * @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -99,6 +100,11 @@ songEditor::songEditor( song * _song, songEditor * & _engine_ptr ) : m_positionLine = new positionLine( this ); + // let's get notified when loading a project + connect( m_s, SIGNAL( projectLoaded() ), + this, SLOT( adjustUiAfterProjectLoad() ) ); + + // add some essential widgets to global tool-bar QWidget * tb = engine::mainWindow()->toolBar(); @@ -698,6 +704,22 @@ void songEditor::zoomingChanged() +void songEditor::adjustUiAfterProjectLoad() +{ + //if( isMaximized() ) + { + // make sure to bring us to front as the song editor is the central + // widget in a song and when just opening a song in order to listen to + // it, it's very annyoing to manually bring up the song editor each time + engine::mainWindow()->workspace()->setActiveSubWindow( + qobject_cast( parentWidget() ) ); + } + scrolled( 0 ); +} + + + + bool songEditor::allowRubberband() const { return( m_editModeButton->isChecked() );