[kde-doc-english] [kwave] /: bugfix: minimized windows were not migrated properly when switching GUI type

Thomas Eschenbacher Thomas.Eschenbacher at gmx.de
Sat Mar 21 12:27:42 UTC 2015


Git commit 3e9cd29c6f3f42931c08fdaf8000155b2f41d94e by Thomas Eschenbacher.
Committed on 21/03/2015 at 12:25.
Pushed by eschenbacher into branch 'master'.

bugfix: minimized windows were not migrated properly when switching GUI type

new command: window:minimize

minor EBN fix in stringenter dialog

M  +2    -0    CHANGES
M  +13   -0    doc/en/index.docbook
M  +33   -8    kwave/TopWidget.cpp
M  +4    -2    libkwave/SignalManager.cpp
M  +1    -1    plugins/stringenter/StringEnterDialog.h

http://commits.kde.org/kwave/3e9cd29c6f3f42931c08fdaf8000155b2f41d94e

diff --git a/CHANGES b/CHANGES
index ce410d8..a2a78f3 100644
--- a/CHANGES
+++ b/CHANGES
@@ -16,6 +16,8 @@
  * file info dialog: MPEG settings were not handled properly
  * bugfix: assert/numeric overflow in selectnextlabels() at end of file
  * new plugin: stringenter
+ * bugfix: minimized windows were not migrated properly when switching GUI type
+ * new command: window:minimize
 
 0.8.99-2 [2015-01-02]
 
diff --git a/doc/en/index.docbook b/doc/en/index.docbook
index d82cd71..25bc3c2 100644
--- a/doc/en/index.docbook
+++ b/doc/en/index.docbook
@@ -125,6 +125,7 @@
   <!ENTITY no-i18n-cmd_window_cascade "window:cascade">
   <!ENTITY no-i18n-cmd_window_click "window:click">
   <!ENTITY no-i18n-cmd_window_close "window:close">
+  <!ENTITY no-i18n-cmd_window_minimize "window:minimize">
   <!ENTITY no-i18n-cmd_window_mousemove "window:mousemove">
   <!ENTITY no-i18n-cmd_window_next_sub "window:next_sub">
   <!ENTITY no-i18n-cmd_window_prev_sub "window:prev_sub">
@@ -3127,6 +3128,7 @@
 		<indexentry><primaryie><link linkend="cmd_sect_window_cascade" endterm="cmd_title_window_cascade"/></primaryie></indexentry>
 		<indexentry><primaryie><link linkend="cmd_sect_window_click" endterm="cmd_title_window_click"/></primaryie></indexentry>
 		<indexentry><primaryie><link linkend="cmd_sect_window_close" endterm="cmd_title_window_close"/></primaryie></indexentry>
+		<indexentry><primaryie><link linkend="cmd_sect_window_minimize" endterm="cmd_title_window_minimize"/></primaryie></indexentry>
 		<indexentry><primaryie><link linkend="cmd_sect_window_mousemove" endterm="cmd_title_window_mousemove"/></primaryie></indexentry>
 		<indexentry><primaryie><link linkend="cmd_sect_window_next_sub" endterm="cmd_title_window_next_sub"/></primaryie></indexentry>
 		<indexentry><primaryie><link linkend="cmd_sect_window_prev_sub" endterm="cmd_title_window_prev_sub"/></primaryie></indexentry>
@@ -4828,6 +4830,17 @@
 	</tbody></tgroup></informaltable></simplesect>
 	</sect2>
 
+	<!-- @COMMAND@ window:minimize() -->
+	<sect2 id="cmd_sect_window_minimize"><title id="cmd_title_window_minimize">&no-i18n-cmd_window_minimize;</title>
+	<simplesect>
+	    <title>&i18n-cmd_syntax;<command>&no-i18n-cmd_window_minimize;</command></title>
+	    <para>
+		Minimizes the currently active sub window when in MDI mode or
+		the current toplevel window when in SDI or Tab mode.
+	    </para>
+	</simplesect>
+	</sect2>
+
 	<!-- @COMMAND@ window:mousemove(class,x,y) -->
 	<sect2 id="cmd_sect_window_mousemove"><title id="cmd_title_window_mousemove">&no-i18n-cmd_window_mousemove;</title>
 	<simplesect>
diff --git a/kwave/TopWidget.cpp b/kwave/TopWidget.cpp
index ac5b77e..eda032a 100644
--- a/kwave/TopWidget.cpp
+++ b/kwave/TopWidget.cpp
@@ -531,8 +531,17 @@ QList<Kwave::FileContext *> Kwave::TopWidget::detachAllContexts()
 	// remove the entry from the map to prevent damage
 	i.remove();
 
-	// detach the main widget from the MDI sub window
 	if (sub) {
+	    // leave the "minimized" state before migration
+	    Qt::WindowStates state = sub->windowState();
+	    if (state & Qt::WindowMinimized)
+	    {
+		state &= ~Qt::WindowMinimized;
+		sub->setWindowState(state);
+		sub->showNormal();
+	    }
+
+	    // detach the main widget from the MDI sub window
 	    sub->setWidget(0);
 	    delete sub;
 	}
@@ -662,20 +671,18 @@ void Kwave::TopWidget::insertContext(Kwave::FileContext *context)
 		// single sub window, switching to tab mode shows a tab +
 		// a sub window with frame and title (not maximized within
 		// the mdi area)
+		Qt::WindowStates state = sub->windowState();
 		if (m_application.guiType() == Kwave::App::GUI_TAB)
 		{
-		    sub->setWindowState(
-			sub->windowState() | Qt::WindowMaximized
-		    );
+		    state |=  Qt::WindowMaximized;
+		    sub->setWindowState(state);
 		    sub->show();
 		}
 		else
 		{
-		    sub->setWindowState(
-			sub->windowState() & ~Qt::WindowMaximized
-		    );
+		    state &= ~Qt::WindowMaximized;
+		    sub->setWindowState(state);
 		    sub->showNormal();
-
 		}
 
 		m_mdi_area->setActiveSubWindow(sub);
@@ -774,14 +781,31 @@ int Kwave::TopWidget::executeCommand(const QString &line)
 	{
 	    KMessageBox::enableAllMessages();
 	}
+    CASE_COMMAND("window:minimize")
+	if (m_application.guiType() == Kwave::App::GUI_MDI) {
+	    // in case of MDI mode: minimize the current sub window
+	    if (m_mdi_area) {
+		QMdiSubWindow *sub = m_mdi_area->activeSubWindow();
+		if (!sub) return -1;
+		sub->setWindowState(windowState() | Qt::WindowMinimized);
+	    }
+	} else {
+	    // in case of TAB or SDI mode: minimize the toplevel window
+	    setWindowState(windowState() | Qt::WindowMinimized);
+	}
+	return 0;
     CASE_COMMAND("window:next_sub")
 	if (m_mdi_area) m_mdi_area->activateNextSubWindow();
+	return 0;
     CASE_COMMAND("window:prev_sub")
 	if (m_mdi_area) m_mdi_area->activatePreviousSubWindow();
+	return 0;
     CASE_COMMAND("window:cascade")
 	if (m_mdi_area) m_mdi_area->cascadeSubWindows();
+	return 0;
     CASE_COMMAND("window:tile")
 	if (m_mdi_area) m_mdi_area->tileSubWindows();
+	return 0;
     CASE_COMMAND("window:tile_vertical")
 	if (!m_mdi_area) return 0;
 
@@ -806,6 +830,7 @@ int Kwave::TopWidget::executeCommand(const QString &line)
 	    sub->move(0, y);
 	    y += increment;
 	}
+	return 0;
 
     CASE_COMMAND("window:activate")
 	if (m_mdi_area) {
diff --git a/libkwave/SignalManager.cpp b/libkwave/SignalManager.cpp
index b788af1..60d5325 100644
--- a/libkwave/SignalManager.cpp
+++ b/libkwave/SignalManager.cpp
@@ -894,9 +894,11 @@ int Kwave::SignalManager::executeCommand(const QString &command)
 	    }
 	}
 
-	if (found)
+	if (found) {
 	    m_meta_data.replace(Kwave::MetaDataList(info));
-	else
+	    // we now have new meta data
+	    emit sigMetaDataChanged(m_meta_data);
+	} else
 	    return -EINVAL;
     CASE_COMMAND("dump_metadata")
 	qDebug("DUMP OF META DATA => %s", DBG(parser.firstParam()));
diff --git a/plugins/stringenter/StringEnterDialog.h b/plugins/stringenter/StringEnterDialog.h
index 443cc42..127d874 100644
--- a/plugins/stringenter/StringEnterDialog.h
+++ b/plugins/stringenter/StringEnterDialog.h
@@ -39,7 +39,7 @@ namespace Kwave
 	 * Constructor.
 	 * @param parent the parent widget the dialog belongs to
 	 */
-	StringEnterDialog(QWidget *parent);
+	explicit StringEnterDialog(QWidget *parent);
 
 	/** Destructor */
 	virtual ~StringEnterDialog();


More information about the kde-doc-english mailing list