mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-26 06:11:37 +00:00
53663750f7
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
82 lines
1.9 KiB
C++
82 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;
|
|
}
|