1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_BASE_GTK_FOCUS_STORE_GTK_H_ 6 #define UI_BASE_GTK_FOCUS_STORE_GTK_H_ 7 8 #include "base/basictypes.h" 9 #include "ui/base/ui_export.h" 10 11 typedef struct _GtkWidget GtkWidget; 12 13 namespace ui { 14 15 class UI_EXPORT FocusStoreGtk { 16 public: 17 FocusStoreGtk(); 18 ~FocusStoreGtk(); 19 widget()20 GtkWidget* widget() const { return widget_; } 21 22 // Save the widget that is currently focused for |widget|'s toplevel (NOT 23 // |widget|). 24 void Store(GtkWidget* widget); 25 26 // Save |widget| as the focus widget. Call with NULL to clear |widget_|. 27 void SetWidget(GtkWidget* widget); 28 29 private: 30 // Disconnect the previous destroy handler (if any). 31 void DisconnectDestroyHandler(); 32 33 // The widget which last had focus. 34 GtkWidget* widget_; 35 36 // The widget for which we've stored focus might be destroyed by the time we 37 // want to restore focus. Thus we connect to the "destroy" signal on that 38 // widget. This is the ID for the destroy handler. 39 unsigned int destroy_handler_id_; 40 41 DISALLOW_COPY_AND_ASSIGN(FocusStoreGtk); 42 }; 43 44 } // namespace ui 45 46 #endif // UI_BASE_GTK_FOCUS_STORE_GTK_H_ 47