From 53312de5e5d8496b973d93fa4b8397906faa99ee Mon Sep 17 00:00:00 2001 From: Philippe Saint-Pierre Date: Sat, 25 Aug 2012 21:28:10 -0400 Subject: [PATCH] MediaPlayer: Toggling Fullscreen wrongly reset control status All controls were enabled when toggling fullscreen on and off; now it recalls the argument last used in SetEnabled() and reuse it when called in AttachedInWindow() (which occurs in such toggling) Fixes #8804. --- src/apps/mediaplayer/ControllerView.cpp | 8 -------- src/apps/mediaplayer/ControllerView.h | 1 - src/apps/mediaplayer/interface/TransportControlGroup.cpp | 7 +++++-- src/apps/mediaplayer/interface/TransportControlGroup.h | 1 + 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/apps/mediaplayer/ControllerView.cpp b/src/apps/mediaplayer/ControllerView.cpp index f3b917659f..9611df3b6e 100644 --- a/src/apps/mediaplayer/ControllerView.cpp +++ b/src/apps/mediaplayer/ControllerView.cpp @@ -89,14 +89,6 @@ ControllerView::MessageReceived(BMessage* message) // #pragma mark - -uint32 -ControllerView::EnabledButtons() -{ - // TODO: superflous - return 0xffffffff; -} - - void ControllerView::TogglePlaying() { diff --git a/src/apps/mediaplayer/ControllerView.h b/src/apps/mediaplayer/ControllerView.h index 080fd24b4b..51469e0e15 100644 --- a/src/apps/mediaplayer/ControllerView.h +++ b/src/apps/mediaplayer/ControllerView.h @@ -38,7 +38,6 @@ public: ~ControllerView(); // TransportControlGroup interface - virtual uint32 EnabledButtons(); virtual void TogglePlaying(); virtual void Stop(); virtual void Rewind(); diff --git a/src/apps/mediaplayer/interface/TransportControlGroup.cpp b/src/apps/mediaplayer/interface/TransportControlGroup.cpp index 3ac71a932a..1aa4c60324 100644 --- a/src/apps/mediaplayer/interface/TransportControlGroup.cpp +++ b/src/apps/mediaplayer/interface/TransportControlGroup.cpp @@ -66,7 +66,8 @@ TransportControlGroup::TransportControlGroup(BRect frame, bool useSkipButtons, fPlayPause(NULL), fStop(NULL), fMute(NULL), - fSymbolScale(1.0f) + fSymbolScale(1.0f), + fLastEnabledButtons(0) { // Pick a symbol size based on the current system font size, but make // sure the size is uneven, so the pointy shapes have their middle on @@ -284,7 +285,7 @@ TransportControlGroup::MessageReceived(BMessage* message) uint32 TransportControlGroup::EnabledButtons() { - return 0; + return fLastEnabledButtons; } @@ -363,6 +364,8 @@ TransportControlGroup::SetEnabled(uint32 buttons) if (!LockLooper()) return; + fLastEnabledButtons = buttons; + fSeekSlider->SetEnabled(buttons & SEEK_ENABLED); fSeekSlider->SetToolTip((buttons & SEEK_ENABLED) != 0 ? fPositionToolTip : NULL); diff --git a/src/apps/mediaplayer/interface/TransportControlGroup.h b/src/apps/mediaplayer/interface/TransportControlGroup.h index a6d3fd7d4f..b2eb225eb1 100644 --- a/src/apps/mediaplayer/interface/TransportControlGroup.h +++ b/src/apps/mediaplayer/interface/TransportControlGroup.h @@ -122,6 +122,7 @@ private: BGroupLayout* fControlLayout; float fSymbolScale; + uint32 fLastEnabledButtons; }; #endif // TRANSPORT_CONTROL_GROUP_H