forked from mirrors/gecko-dev
		
	MouseTrailer, using a 200ms timer, was used to track whether a pointer was still present over a window. Windows has, since Windows 2000, offered to do this for us via an API called TrackMouseEvent. (It'll also give us hover timings and non-client area versions if we want) I'm all for having Windows do the work for us, and it'll save us from waking up the main thread five times a second. --HG-- extra : rebase_source : 9e56fd40929257d847c5cddb8a998c3ca2381655
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | 
						|
/* This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 | 
						|
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | 
						|
 | 
						|
#include "nsToolkit.h"
 | 
						|
#include "nsAppShell.h"
 | 
						|
#include "nsWindow.h"
 | 
						|
#include "nsWidgetsCID.h"
 | 
						|
#include "prmon.h"
 | 
						|
#include "prtime.h"
 | 
						|
#include "nsIServiceManager.h"
 | 
						|
#include "nsComponentManagerUtils.h"
 | 
						|
#include <objbase.h>
 | 
						|
#include "WinUtils.h"
 | 
						|
 | 
						|
#include "nsUXThemeData.h"
 | 
						|
 | 
						|
// unknwn.h is needed to build with WIN32_LEAN_AND_MEAN
 | 
						|
#include <unknwn.h>
 | 
						|
 | 
						|
using namespace mozilla::widget;
 | 
						|
 | 
						|
nsToolkit* nsToolkit::gToolkit = nullptr;
 | 
						|
HINSTANCE nsToolkit::mDllInstance = 0;
 | 
						|
 | 
						|
//-------------------------------------------------------------------------
 | 
						|
//
 | 
						|
// constructor
 | 
						|
//
 | 
						|
//-------------------------------------------------------------------------
 | 
						|
nsToolkit::nsToolkit()  
 | 
						|
{
 | 
						|
    MOZ_COUNT_CTOR(nsToolkit);
 | 
						|
 | 
						|
#if defined(MOZ_STATIC_COMPONENT_LIBS)
 | 
						|
    nsToolkit::Startup(GetModuleHandle(nullptr));
 | 
						|
#endif
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
//-------------------------------------------------------------------------
 | 
						|
//
 | 
						|
// destructor
 | 
						|
//
 | 
						|
//-------------------------------------------------------------------------
 | 
						|
nsToolkit::~nsToolkit()
 | 
						|
{
 | 
						|
    MOZ_COUNT_DTOR(nsToolkit);
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
nsToolkit::Startup(HMODULE hModule)
 | 
						|
{
 | 
						|
    nsToolkit::mDllInstance = hModule;
 | 
						|
    WinUtils::Initialize();
 | 
						|
    nsUXThemeData::Initialize();
 | 
						|
}
 | 
						|
 | 
						|
void
 | 
						|
nsToolkit::Shutdown()
 | 
						|
{
 | 
						|
    delete gToolkit;
 | 
						|
    gToolkit = nullptr;
 | 
						|
}
 | 
						|
 | 
						|
//-------------------------------------------------------------------------
 | 
						|
//
 | 
						|
// Return the nsToolkit for the current thread.  If a toolkit does not
 | 
						|
// yet exist, then one will be created...
 | 
						|
//
 | 
						|
//-------------------------------------------------------------------------
 | 
						|
// static
 | 
						|
nsToolkit* nsToolkit::GetToolkit()
 | 
						|
{
 | 
						|
  if (!gToolkit) {
 | 
						|
    gToolkit = new nsToolkit();
 | 
						|
  }
 | 
						|
 | 
						|
  return gToolkit;
 | 
						|
}
 |