|
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 class nsGTKToolkit |
|
21 { |
|
22 public: |
|
23 nsGTKToolkit(); |
|
24 |
|
25 static nsGTKToolkit* GetToolkit(); |
|
26 |
|
27 static void Shutdown() { |
|
28 delete gToolkit; |
|
29 gToolkit = nullptr; |
|
30 } |
|
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 void SetDesktopStartupID(const nsACString& aID) { mDesktopStartupID = aID; } |
|
38 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 void SetFocusTimestamp(uint32_t aTimestamp) { mFocusTimestamp = aTimestamp; } |
|
45 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 |