[haiku-commits] haiku: hrev43648 - src/apps/mediaplayer

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 10 Jan 2012 22:05:54 +0100 (CET)

hrev43648 adds 1 changeset to branch 'master'
old head: 7dde214bc0f1f3ec2417b8e1ae6e07733d79829e
new head: 7532547c0628ffd5021eccf2a3c293cedef158d2

----------------------------------------------------------------------------

7532547: Also hide the full screen controls when the mouse is over them.
  
  * We just wait a little longer in this case, like 4.5s.
  * Changed the code to only send the messages when needed, before they were
    being sent every 1.5s.
  * However, this is untested as of yet, as the layout changes didn't allow me
    to run the MediaPlayer on my system. Will do so in a minute on another one.

                                   [ Axel Dörfler <axeld@xxxxxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev43648
Commit:      7532547c0628ffd5021eccf2a3c293cedef158d2
URL:         http://cgit.haiku-os.org/haiku/commit/?id=7532547
Author:      Axel Dörfler <axeld@xxxxxxxxxxxxxxxx>
Date:        Tue Jan 10 21:02:03 2012 UTC

----------------------------------------------------------------------------

3 files changed, 38 insertions(+), 14 deletions(-)
src/apps/mediaplayer/MainWin.cpp   |   24 +++++++++++++-----------
src/apps/mediaplayer/VideoView.cpp |   25 ++++++++++++++++++++++---
src/apps/mediaplayer/VideoView.h   |    3 +++

----------------------------------------------------------------------------

diff --git a/src/apps/mediaplayer/MainWin.cpp b/src/apps/mediaplayer/MainWin.cpp
index c11e61c..5de830e 100644
--- a/src/apps/mediaplayer/MainWin.cpp
+++ b/src/apps/mediaplayer/MainWin.cpp
@@ -975,7 +975,8 @@ MainWin::MessageReceived(BMessage* msg)
                        if (fIsFullscreen) {
                                BPoint videoViewWhere;
                                if (msg->FindPoint("where", &videoViewWhere) == 
B_OK) {
-                                       if 
(!fControls->Frame().Contains(videoViewWhere)) {
+                                       if (msg->FindBool("force")
+                                               || 
!fControls->Frame().Contains(videoViewWhere)) {
                                                _ShowFullscreenControls(false);
                                                // hide the mouse cursor until 
the user moves it
                                                be_app->ObscureCursor();
@@ -2333,6 +2334,7 @@ MainWin::_ShowFullscreenControls(bool show, bool animate)
                return;
 
        fShowsFullscreenControls = show;
+       fVideoView->SetFullscreenControlsVisible(show);
 
        if (show) {
                fControls->RemoveSelf();
@@ -2341,6 +2343,7 @@ MainWin::_ShowFullscreenControls(bool show, bool animate)
                fVideoView->AddChild(fControls);
                if (fScaleFullscreenControls)
                        fControls->SetSymbolScale(1.5f);
+
                while (fControls->IsHidden())
                        fControls->Show();
        }
@@ -2364,16 +2367,15 @@ MainWin::_ShowFullscreenControls(bool show, bool 
animate)
                finalMessage.AddFloat("offset", originalY + moveDist);
                finalMessage.AddBool("show", show);
                PostMessage(&finalMessage, this);
-       } else {
-               if (!show) {
-                       fControls->RemoveSelf();
-                       fControls->MoveTo(fVideoView->Frame().left,
-                               fVideoView->Frame().bottom + 1);
-                       fBackground->AddChild(fControls);
-                       fControls->SetSymbolScale(1.0f);
-                       while (!fControls->IsHidden())
-                               fControls->Hide();
-               }
+       } else if (!show) {
+               fControls->RemoveSelf();
+               fControls->MoveTo(fVideoView->Frame().left,
+                       fVideoView->Frame().bottom + 1);
+               fBackground->AddChild(fControls);
+               fControls->SetSymbolScale(1.0f);
+
+               while (!fControls->IsHidden())
+                       fControls->Hide();
        }
 }
 
diff --git a/src/apps/mediaplayer/VideoView.cpp 
b/src/apps/mediaplayer/VideoView.cpp
index 1902df3..780addc 100644
--- a/src/apps/mediaplayer/VideoView.cpp
+++ b/src/apps/mediaplayer/VideoView.cpp
@@ -31,6 +31,8 @@ VideoView::VideoView(BRect frame, const char* name, uint32 
resizeMask)
        fOverlayMode(false),
        fIsPlaying(false),
        fIsFullscreen(false),
+       fFullscreenControlsVisible(false),
+       fSendHideCounter(0),
        fLastMouseMove(system_time()),
 
        fSubtitleBitmap(new SubtitleBitmap),
@@ -127,9 +129,17 @@ VideoView::Pulse()
                uint32 buttons;
                GetMouse(&where, &buttons, false);
                if (buttons == 0) {
-                       BMessage message(M_HIDE_FULL_SCREEN_CONTROLS);
-                       message.AddPoint("where", where);
-                       Window()->PostMessage(&message, Window());
+                       if (fFullscreenControlsVisible) {
+                               if (fSendHideCounter == 0 || fSendHideCounter 
== 3) {
+                                       // Send after 1.5s and after 4.5s
+                                       BMessage 
message(M_HIDE_FULL_SCREEN_CONTROLS);
+                                       message.AddPoint("where", where);
+                                       if (fSendHideCounter > 0)
+                                               message.AddBool("force", true);
+                                       Window()->PostMessage(&message, 
Window());
+                               }
+                               fSendHideCounter++;
+                       }
 
                        ConvertToScreen(&where);
                        set_mouse_position((int32)where.x, (int32)where.y);
@@ -292,6 +302,15 @@ void
 VideoView::SetFullscreen(bool fullScreen)
 {
        fIsFullscreen = fullScreen;
+       fSendHideCounter = 0;
+}
+
+
+void
+VideoView::SetFullscreenControlsVisible(bool visible)
+{
+       fFullscreenControlsVisible = visible;
+       fSendHideCounter = 0;
 }
 
 
diff --git a/src/apps/mediaplayer/VideoView.h b/src/apps/mediaplayer/VideoView.h
index 4eb7372..40611d0 100644
--- a/src/apps/mediaplayer/VideoView.h
+++ b/src/apps/mediaplayer/VideoView.h
@@ -49,6 +49,7 @@ public:
 
                        void                            SetPlaying(bool 
playing);
                        void                            SetFullscreen(bool 
fullScreen);
+                       void                            
SetFullscreenControlsVisible(bool visible);
                        void                            SetVideoFrame(const 
BRect& frame);
 
                        void                            SetSubTitle(const char* 
text);
@@ -68,6 +69,8 @@ private:
                        rgb_color                       fOverlayKeyColor;
                        bool                            fIsPlaying;
                        bool                            fIsFullscreen;
+                       bool                            
fFullscreenControlsVisible;
+                       uint8                           fSendHideCounter;
                        bigtime_t                       fLastMouseMove;
 
                        SubtitleBitmap*         fSubtitleBitmap;


Other related posts:

  • » [haiku-commits] haiku: hrev43648 - src/apps/mediaplayer - axeld