CVS commit by vriezen: Fix resizing to previous source size when new source hasn't got one (eg. switching from VDR, w/ a manually resized window, to a radio stream, resized to window to PAL size again) M +5 -8 kmplayerapp.cpp 1.141 M +10 -11 kmplayerpartbase.cpp 1.150 M +0 -2 kmplayervdr.cpp 1.51 --- kdeextragear-2/kmplayer/src/kmplayerapp.cpp #1.140:1.141 @@ -303,15 +303,12 @@ KDE_NO_EXPORT void KMPlayerApp::openDocu KDE_NO_EXPORT void KMPlayerApp::resizePlayer (int percentage) { KMPlayer::Source * source = m_player->source (); - int w = source->width (); - int h = source->height (); - if (w <= 0 || h <= 0) { + if (!source || (percentage == 100 && source->aspect () < 0.01)) + return; // 100% of a not set aspect? + int w, h; m_player->sizes (w, h); - source->setWidth (w); - source->setHeight (h); - } kdDebug () << "KMPlayerApp::resizePlayer (" << w << "," << h << ")" << endl; if (w > 0 && h > 0) { if (source->aspect () > 0.01) { - w = int (source->aspect () * source->height ()); + w = int (source->aspect () * h); w += w % 2; source->setWidth (w); --- kdeextragear-2/kmplayer/src/kmplayerpartbase.cpp #1.149:1.150 @@ -313,13 +313,11 @@ void PartBase::setSource (Source * _sour m_source->deactivate (); stop (); - if (m_view) { - if (m_view->viewer ()) - m_view->viewer ()->setAspect (0.0); + if (m_view) m_view->reset (); - } disconnect (m_source, SIGNAL (currentURL (Source *)), m_process, SLOT (play (Source *))); disconnect (m_source, SIGNAL (endOfPlayItems ()), this, SLOT (stop ())); } + if (m_view) m_view->controlPanel ()->setAutoControls (true); QString p = m_settings->backends [_source->name()]; @@ -357,4 +355,6 @@ void PartBase::setSource (Source * _sour updatePlayerMenu (); m_source->init (); + if (m_view && m_view->viewer ()) + m_view->viewer ()->setAspect (0.0); if (m_source) QTimer::singleShot (0, m_source, SLOT (activate ())); emit sourceChanged (m_source); @@ -525,9 +525,9 @@ void PartBase::playListItemSelected (QLi void PartBase::updateTree () { m_in_update_tree = true; - if (m_process && m_process->view ()) { + if (m_process && m_view) { if (m_process->player () != this) m_process->player ()->updateTree (); else if (m_source) - m_process->view ()->playList ()->updateTree + m_view->playList ()->updateTree (m_source->document (), m_source->current ()); } @@ -604,10 +604,9 @@ void PartBase::decreaseVolume () { void PartBase::sizes (int & w, int & h) const { - if (m_noresize && m_view->viewer ()) { - w = m_view->viewer ()->width (); - h = m_view->viewer ()->height (); - } else { w = m_source->width (); h = m_source->height (); + if ((m_noresize || w <= 0 || h <= 0) && m_view->viewer ()) { + w = m_view->viewer ()->width (); + h = m_view->viewer ()->height (); } } --- kdeextragear-2/kmplayer/src/kmplayervdr.cpp #1.50:1.51 @@ -182,6 +182,4 @@ KDE_NO_EXPORT void KMPlayerVDRSource::ac connect (panel->button (KMPlayer::ControlPanel::button_blue), SIGNAL (clicked ()), this, SLOT (keyBlue ())); setAspect (scale ? 16.0/9 : 1.33); - if (m_player->settings ()->sizeratio) - m_app->view ()->viewer ()->setAspect (aspect ()); if (!m_url.protocol ().compare ("kmplayer")) m_request_jump = KURL::decode_string (m_url.path ()).mid (1);