Merge pull request #4169 from koying/fixdvdtouch
authorjmarshallnz <jcmarsha@gmail.com>
Mon, 9 Jun 2014 09:47:00 +0000 (21:47 +1200)
committerJonathan Marshall <jmarshall@xbmc.org>
Sun, 15 Jun 2014 04:25:14 +0000 (16:25 +1200)
FIX: do not popup OSD on DVD menu with touch or mouse (fixes #14906)

xbmc/Application.cpp
xbmc/cores/dvdplayer/DVDPlayer.cpp
xbmc/cores/omxplayer/OMXPlayer.cpp
xbmc/guilib/Key.h
xbmc/video/windows/GUIWindowFullScreen.cpp
xbmc/video/windows/GUIWindowFullScreen.h

index f3ea7f1..43bc778 100644 (file)
@@ -2692,6 +2692,10 @@ bool CApplication::OnAction(const CAction &action)
   {
     if (m_pPlayer->OnAction(action))
       return true;
+    // Player ignored action; popup the OSD
+    if ((action.GetID() == ACTION_MOUSE_MOVE && (action.GetAmount(2) || action.GetAmount(3)))  // filter "false" mouse move from touch
+        || action.GetID() == ACTION_MOUSE_LEFT_CLICK)
+      CApplicationMessenger::Get().SendAction(CAction(ACTION_TRIGGER_OSD), WINDOW_INVALID, false);
   }
 
   // stop : stops playing current audio song
index 3a37dee..a485275 100644 (file)
@@ -3729,7 +3729,15 @@ bool CDVDPlayer::OnAction(const CAction &action)
           pt.y *= rs.Height() / rd.Height();
           pt += CPoint(rs.x1, rs.y1);
           if (action.GetID() == ACTION_MOUSE_LEFT_CLICK)
-            return pMenus->OnMouseClick(pt);
+          {
+            if (pMenus->OnMouseClick(pt))
+              return true;
+            else
+            {
+              CApplicationMessenger::Get().SendAction(CAction(ACTION_TRIGGER_OSD), WINDOW_INVALID, false); // Trigger the osd
+              return false;
+            }
+          }
           return pMenus->OnMouseMove(pt);
         }
         break;
index 0b80be5..2515fa1 100644 (file)
@@ -3998,7 +3998,15 @@ bool COMXPlayer::OnAction(const CAction &action)
           pt.y *= rs.Height() / rd.Height();
           pt += CPoint(rs.x1, rs.y1);
           if (action.GetID() == ACTION_MOUSE_LEFT_CLICK)
-            return pMenus->OnMouseClick(pt);
+          {
+            if (pMenus->OnMouseClick(pt))
+              return true;
+            else
+            {
+              CApplicationMessenger::Get().SendAction(CAction(ACTION_TRIGGER_OSD), WINDOW_INVALID, false); // Trigger the osd
+              return false;
+            }
+          }
           return pMenus->OnMouseMove(pt);
         }
         break;
index 3f4e6fb..0105cd4 100644 (file)
 #define ACTION_SETTINGS_RESET         241
 #define ACTION_SETTINGS_LEVEL_CHANGE  242
 
+#define ACTION_TRIGGER_OSD            243 // show autoclosing OSD. Can b used in videoFullScreen.xml window id=2005
+
 // touch actions
 #define ACTION_TOUCH_TAP              401
 #define ACTION_TOUCH_TAP_TEN          410
index 8b88704..4caa406 100644 (file)
@@ -142,6 +142,10 @@ bool CGUIWindowFullScreen::OnAction(const CAction &action)
     ToggleOSD();
     return true;
 
+  case ACTION_TRIGGER_OSD:
+    TriggerOSD();
+    return true;
+
   case ACTION_SHOW_GUI:
     {
       // switch back to the menu
@@ -538,17 +542,6 @@ EVENT_RESULT CGUIWindowFullScreen::OnMouseEvent(const CPoint &point, const CMous
   }
   if (event.m_id >= ACTION_GESTURE_NOTIFY && event.m_id <= ACTION_GESTURE_END) // gestures
     return EVENT_RESULT_UNHANDLED;
-  if (event.m_id != ACTION_MOUSE_MOVE || event.m_offsetX || event.m_offsetY)
-  { // some other mouse action has occurred - bring up the OSD
-    // if it is not already running
-    CGUIDialogVideoOSD *pOSD = (CGUIDialogVideoOSD *)g_windowManager.GetWindow(WINDOW_DIALOG_VIDEO_OSD);
-    if (pOSD && !pOSD->IsDialogRunning())
-    {
-      pOSD->SetAutoClose(3000);
-      pOSD->DoModal();
-    }
-    return EVENT_RESULT_HANDLED;
-  }
   return EVENT_RESULT_UNHANDLED;
 }
 
@@ -862,3 +855,13 @@ void CGUIWindowFullScreen::ToggleOSD()
       pOSD->DoModal();
   }
 }
+
+void CGUIWindowFullScreen::TriggerOSD()
+{
+  CGUIDialogVideoOSD *pOSD = (CGUIDialogVideoOSD *)g_windowManager.GetWindow(WINDOW_DIALOG_VIDEO_OSD);
+  if (pOSD && !pOSD->IsDialogRunning())
+  {
+    pOSD->SetAutoClose(3000);
+    pOSD->DoModal();
+  }
+}
index bb8514c..03608af 100644 (file)
@@ -44,6 +44,7 @@ private:
   void SeekChapter(int iChapter);
   void FillInTVGroups();
   void ToggleOSD();
+  void TriggerOSD();
 
   enum SEEK_TYPE { SEEK_ABSOLUTE, SEEK_RELATIVE };
   enum SEEK_DIRECTION { SEEK_FORWARD, SEEK_BACKWARD };