[PVR][Estuary] Timer settings dialog: Show client name in timer type selection dialog...
[xbmc.git] / xbmc / windows / GUIWindowPointer.cpp
blobd9e1bda499977748f987bc5407e1963b695ee7f1
1 /*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #include "GUIWindowPointer.h"
11 #include "ServiceBroker.h"
12 #include "input/InputManager.h"
13 #include "input/mouse/MouseStat.h"
14 #include "windowing/WinSystem.h"
16 #define ID_POINTER 10
18 CGUIWindowPointer::CGUIWindowPointer(void)
19 : CGUIDialog(WINDOW_DIALOG_POINTER, "Pointer.xml", DialogModalityType::MODELESS)
21 m_pointer = 0;
22 m_loadType = LOAD_ON_GUI_INIT;
23 m_needsScaling = false;
24 m_active = false;
25 m_renderOrder = RENDER_ORDER_WINDOW_POINTER;
28 CGUIWindowPointer::~CGUIWindowPointer(void) = default;
30 void CGUIWindowPointer::SetPointer(int pointer)
32 if (m_pointer == pointer) return;
33 // set the new pointer visible
34 CGUIControl *pControl = GetControl(pointer);
35 if (pControl)
37 pControl->SetVisible(true);
38 // disable the old pointer
39 pControl = GetControl(m_pointer);
40 if (pControl) pControl->SetVisible(false);
41 // set pointer to the new one
42 m_pointer = pointer;
46 void CGUIWindowPointer::UpdateVisibility()
48 if(CServiceBroker::GetWinSystem()->HasCursor())
50 if (CServiceBroker::GetInputManager().IsMouseActive())
51 Open();
52 else
53 Close();
57 void CGUIWindowPointer::OnWindowLoaded()
58 { // set all our pointer images invisible
59 for (iControls i = m_children.begin();i != m_children.end(); ++i)
61 CGUIControl* pControl = *i;
62 pControl->SetVisible(false);
64 CGUIWindow::OnWindowLoaded();
65 DynamicResourceAlloc(false);
66 m_pointer = 0;
67 m_renderOrder = RENDER_ORDER_WINDOW_POINTER;
70 void CGUIWindowPointer::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
72 bool active = CServiceBroker::GetInputManager().IsMouseActive();
73 if (active != m_active)
75 MarkDirtyRegion();
76 m_active = active;
78 MousePosition pos = CServiceBroker::GetInputManager().GetMousePosition();
79 SetPosition((float)pos.x, (float)pos.y);
80 SetPointer(CServiceBroker::GetInputManager().GetMouseState());
81 return CGUIWindow::Process(currentTime, dirtyregions);