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();

Reply via email to