Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /* vim:expandtab:shiftwidth=4:tabstop=4:
3 : */
4 : /* This Source Code Form is subject to the terms of the Mozilla Public
5 : * License, v. 2.0. If a copy of the MPL was not distributed with this
6 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 :
8 : #ifndef GTKTOOLKIT_H
9 : #define GTKTOOLKIT_H
10 :
11 : #include "nsString.h"
12 : #include <gtk/gtk.h>
13 :
14 : /**
15 : * Wrapper around the thread running the message pump.
16 : * The toolkit abstraction is necessary because the message pump must
17 : * execute within the same thread that created the widget under Win32.
18 : */
19 :
20 0 : class nsGTKToolkit
21 : {
22 : public:
23 : nsGTKToolkit();
24 :
25 : static nsGTKToolkit* GetToolkit();
26 :
27 0 : static void Shutdown() {
28 0 : delete gToolkit;
29 0 : gToolkit = nullptr;
30 0 : }
31 :
32 : /**
33 : * Get/set our value of DESKTOP_STARTUP_ID. When non-empty, this is applied
34 : * to the next toplevel window to be shown or focused (and then immediately
35 : * cleared).
36 : */
37 0 : void SetDesktopStartupID(const nsACString& aID) { mDesktopStartupID = aID; }
38 1 : void GetDesktopStartupID(nsACString* aID) { *aID = mDesktopStartupID; }
39 :
40 : /**
41 : * Get/set the timestamp value to be used, if non-zero, to focus the
42 : * next top-level window to be shown or focused (upon which it is cleared).
43 : */
44 0 : void SetFocusTimestamp(uint32_t aTimestamp) { mFocusTimestamp = aTimestamp; }
45 1 : uint32_t GetFocusTimestamp() { return mFocusTimestamp; }
46 :
47 : private:
48 : static nsGTKToolkit* gToolkit;
49 :
50 : nsCString mDesktopStartupID;
51 : uint32_t mFocusTimestamp;
52 : };
53 :
54 : #endif // GTKTOOLKIT_H
|