Home | History | Annotate | Download | only in gtk
      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 CHROME_BROWSER_UI_GTK_FOCUS_STORE_GTK_H_
      6 #define CHROME_BROWSER_UI_GTK_FOCUS_STORE_GTK_H_
      7 #pragma once
      8 
      9 #include "base/basictypes.h"
     10 
     11 typedef struct _GtkWidget GtkWidget;
     12 
     13 class FocusStoreGtk {
     14  public:
     15   FocusStoreGtk();
     16 
     17   virtual ~FocusStoreGtk();
     18 
     19   GtkWidget* widget() const { return widget_; }
     20 
     21   // Save the widget that is currently focused for |widget|'s toplevel (NOT
     22   // |widget|).
     23   void Store(GtkWidget* widget);
     24 
     25   // Save |widget| as the focus widget. Call with NULL to clear |widget_|.
     26   void SetWidget(GtkWidget* widget);
     27 
     28  private:
     29   // Disconnect the previous destroy handler (if any).
     30   void DisconnectDestroyHandler();
     31 
     32   // The widget which last had focus.
     33   GtkWidget* widget_;
     34 
     35   // The widget for which we've stored focus might be destroyed by the time we
     36   // want to restore focus. Thus we connect to the "destroy" signal on that
     37   // widget. This is the ID for the destroy handler.
     38   unsigned int destroy_handler_id_;
     39 
     40   DISALLOW_COPY_AND_ASSIGN(FocusStoreGtk);
     41 };
     42 
     43 #endif  // CHROME_BROWSER_UI_GTK_FOCUS_STORE_GTK_H_
     44