| OLD | NEW | 
|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "views/widget/widget_gtk.h" | 5 #include "views/widget/widget_gtk.h" | 
| 6 | 6 | 
| 7 #include <gdk/gdk.h> | 7 #include <gdk/gdk.h> | 
| 8 #include <gdk/gdkx.h> | 8 #include <gdk/gdkx.h> | 
| 9 #include <X11/extensions/shape.h> | 9 #include <X11/extensions/shape.h> | 
| 10 | 10 | 
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 124 namespace views { | 124 namespace views { | 
| 125 | 125 | 
| 126 // During drag and drop GTK sends a drag-leave during a drop. This means we | 126 // During drag and drop GTK sends a drag-leave during a drop. This means we | 
| 127 // have no way to tell the difference between a normal drag leave and a drop. | 127 // have no way to tell the difference between a normal drag leave and a drop. | 
| 128 // To work around that we listen for DROP_START, then ignore the subsequent | 128 // To work around that we listen for DROP_START, then ignore the subsequent | 
| 129 // drag-leave that GTK generates. | 129 // drag-leave that GTK generates. | 
| 130 class WidgetGtk::DropObserver : public MessageLoopForUI::Observer { | 130 class WidgetGtk::DropObserver : public MessageLoopForUI::Observer { | 
| 131  public: | 131  public: | 
| 132   DropObserver() {} | 132   DropObserver() {} | 
| 133 | 133 | 
| 134   static DropObserver* Get() { | 134   static DropObserver* GetInstance() { | 
| 135     return Singleton<DropObserver>::get(); | 135     return Singleton<DropObserver>::get(); | 
| 136   } | 136   } | 
| 137 | 137 | 
| 138   virtual void WillProcessEvent(GdkEvent* event) { | 138   virtual void WillProcessEvent(GdkEvent* event) { | 
| 139     if (event->type == GDK_DROP_START) { | 139     if (event->type == GDK_DROP_START) { | 
| 140       WidgetGtk* widget = GetWidgetGtkForEvent(event); | 140       WidgetGtk* widget = GetWidgetGtkForEvent(event); | 
| 141       if (widget) | 141       if (widget) | 
| 142         widget->ignore_drag_leave_ = true; | 142         widget->ignore_drag_leave_ = true; | 
| 143     } | 143     } | 
| 144   } | 144   } | 
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 246       has_focus_(false), | 246       has_focus_(false), | 
| 247       delegate_(NULL), | 247       delegate_(NULL), | 
| 248       always_on_top_(false), | 248       always_on_top_(false), | 
| 249       is_double_buffered_(false), | 249       is_double_buffered_(false), | 
| 250       should_handle_menu_key_release_(false) { | 250       should_handle_menu_key_release_(false) { | 
| 251   static bool installed_message_loop_observer = false; | 251   static bool installed_message_loop_observer = false; | 
| 252   if (!installed_message_loop_observer) { | 252   if (!installed_message_loop_observer) { | 
| 253     installed_message_loop_observer = true; | 253     installed_message_loop_observer = true; | 
| 254     MessageLoopForUI* loop = MessageLoopForUI::current(); | 254     MessageLoopForUI* loop = MessageLoopForUI::current(); | 
| 255     if (loop) | 255     if (loop) | 
| 256       loop->AddObserver(DropObserver::Get()); | 256       loop->AddObserver(DropObserver::GetInstance()); | 
| 257   } | 257   } | 
| 258 | 258 | 
| 259   if (type_ != TYPE_CHILD) | 259   if (type_ != TYPE_CHILD) | 
| 260     focus_manager_ = new FocusManager(this); | 260     focus_manager_ = new FocusManager(this); | 
| 261 } | 261 } | 
| 262 | 262 | 
| 263 WidgetGtk::~WidgetGtk() { | 263 WidgetGtk::~WidgetGtk() { | 
| 264   DCHECK(delete_on_destroy_ || widget_ == NULL); | 264   DCHECK(delete_on_destroy_ || widget_ == NULL); | 
| 265   if (type_ != TYPE_CHILD) | 265   if (type_ != TYPE_CHILD) | 
| 266     ActiveWindowWatcherX::RemoveObserver(this); | 266     ActiveWindowWatcherX::RemoveObserver(this); | 
| (...skipping 1388 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1655     GtkWindow* window = GTK_WINDOW(element->data); | 1655     GtkWindow* window = GTK_WINDOW(element->data); | 
| 1656     DCHECK(window); | 1656     DCHECK(window); | 
| 1657     RootView *root_view = FindRootView(window); | 1657     RootView *root_view = FindRootView(window); | 
| 1658     if (root_view) | 1658     if (root_view) | 
| 1659       root_view->NotifyLocaleChanged(); | 1659       root_view->NotifyLocaleChanged(); | 
| 1660   } | 1660   } | 
| 1661   g_list_free(window_list); | 1661   g_list_free(window_list); | 
| 1662 } | 1662 } | 
| 1663 | 1663 | 
| 1664 }  // namespace views | 1664 }  // namespace views | 
| OLD | NEW | 
|---|