1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 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 public: 22 nsGTKToolkit(); 23 24 static nsGTKToolkit* GetToolkit(); 25 Shutdown()26 static void Shutdown() { 27 delete gToolkit; 28 gToolkit = nullptr; 29 } 30 31 /** 32 * Get/set our value of DESKTOP_STARTUP_ID. When non-empty, this is applied 33 * to the next toplevel window to be shown or focused (and then immediately 34 * cleared). 35 */ SetDesktopStartupID(const nsACString & aID)36 void SetDesktopStartupID(const nsACString& aID) { mDesktopStartupID = aID; } GetDesktopStartupID(nsACString * aID)37 void GetDesktopStartupID(nsACString* aID) { *aID = mDesktopStartupID; } 38 39 /** 40 * Get/set the timestamp value to be used, if non-zero, to focus the 41 * next top-level window to be shown or focused (upon which it is cleared). 42 */ SetFocusTimestamp(uint32_t aTimestamp)43 void SetFocusTimestamp(uint32_t aTimestamp) { mFocusTimestamp = aTimestamp; } GetFocusTimestamp()44 uint32_t GetFocusTimestamp() { return mFocusTimestamp; } 45 46 private: 47 static nsGTKToolkit* gToolkit; 48 49 nsCString mDesktopStartupID; 50 uint32_t mFocusTimestamp; 51 }; 52 53 #endif // GTKTOOLKIT_H 54