Move all chromium's code under chromium_src.
This commit is contained in:
parent
1f99a97544
commit
64bf1bcb9f
39 changed files with 594 additions and 53 deletions
65
atom.gyp
65
atom.gyp
|
@ -129,18 +129,10 @@
|
||||||
'atom/browser/ui/file_dialog_gtk.cc',
|
'atom/browser/ui/file_dialog_gtk.cc',
|
||||||
'atom/browser/ui/file_dialog_mac.mm',
|
'atom/browser/ui/file_dialog_mac.mm',
|
||||||
'atom/browser/ui/file_dialog_win.cc',
|
'atom/browser/ui/file_dialog_win.cc',
|
||||||
'atom/browser/ui/gtk/active_window_watcher_x.cc',
|
|
||||||
'atom/browser/ui/gtk/active_window_watcher_x.h',
|
|
||||||
'atom/browser/ui/gtk/active_window_watcher_x_observer.h',
|
|
||||||
'atom/browser/ui/gtk/app_indicator_icon.cc',
|
'atom/browser/ui/gtk/app_indicator_icon.cc',
|
||||||
'atom/browser/ui/gtk/app_indicator_icon.h',
|
'atom/browser/ui/gtk/app_indicator_icon.h',
|
||||||
'atom/browser/ui/gtk/root_window_property_watcher_x.cc',
|
|
||||||
'atom/browser/ui/gtk/root_window_property_watcher_x.h',
|
|
||||||
'atom/browser/ui/gtk/status_icon.cc',
|
'atom/browser/ui/gtk/status_icon.cc',
|
||||||
'atom/browser/ui/gtk/status_icon.h',
|
'atom/browser/ui/gtk/status_icon.h',
|
||||||
'atom/browser/ui/gtk/work_area_watcher_x.cc',
|
|
||||||
'atom/browser/ui/gtk/work_area_watcher_x.h',
|
|
||||||
'atom/browser/ui/gtk/x11_util.cc',
|
|
||||||
'atom/browser/ui/message_box.h',
|
'atom/browser/ui/message_box.h',
|
||||||
'atom/browser/ui/message_box_gtk.cc',
|
'atom/browser/ui/message_box_gtk.cc',
|
||||||
'atom/browser/ui/message_box_mac.mm',
|
'atom/browser/ui/message_box_mac.mm',
|
||||||
|
@ -230,27 +222,41 @@
|
||||||
'atom/renderer/atom_render_view_observer.h',
|
'atom/renderer/atom_render_view_observer.h',
|
||||||
'atom/renderer/atom_renderer_client.cc',
|
'atom/renderer/atom_renderer_client.cc',
|
||||||
'atom/renderer/atom_renderer_client.h',
|
'atom/renderer/atom_renderer_client.h',
|
||||||
'chrome/browser/ui/gtk/event_utils.cc',
|
'chromium_src/chrome/browser/ui/gtk/event_utils.cc',
|
||||||
'chrome/browser/ui/gtk/event_utils.h',
|
'chromium_src/chrome/browser/ui/gtk/event_utils.h',
|
||||||
'chrome/browser/ui/gtk/gtk_custom_menu.cc',
|
'chromium_src/chrome/browser/ui/gtk/gtk_custom_menu.cc',
|
||||||
'chrome/browser/ui/gtk/gtk_custom_menu.h',
|
'chromium_src/chrome/browser/ui/gtk/gtk_custom_menu.h',
|
||||||
'chrome/browser/ui/gtk/gtk_custom_menu_item.cc',
|
'chromium_src/chrome/browser/ui/gtk/gtk_custom_menu_item.cc',
|
||||||
'chrome/browser/ui/gtk/gtk_custom_menu_item.h',
|
'chromium_src/chrome/browser/ui/gtk/gtk_custom_menu_item.h',
|
||||||
'chrome/browser/ui/gtk/gtk_util.cc',
|
'chromium_src/chrome/browser/ui/gtk/gtk_util.cc',
|
||||||
'chrome/browser/ui/gtk/gtk_util.h',
|
'chromium_src/chrome/browser/ui/gtk/gtk_util.h',
|
||||||
'chrome/browser/ui/gtk/gtk_window_util.cc',
|
'chromium_src/chrome/browser/ui/gtk/gtk_window_util.cc',
|
||||||
'chrome/browser/ui/gtk/gtk_window_util.h',
|
'chromium_src/chrome/browser/ui/gtk/gtk_window_util.h',
|
||||||
'chrome/browser/ui/gtk/menu_gtk.cc',
|
'chromium_src/chrome/browser/ui/gtk/menu_gtk.cc',
|
||||||
'chrome/browser/ui/gtk/menu_gtk.h',
|
'chromium_src/chrome/browser/ui/gtk/menu_gtk.h',
|
||||||
'chrome/browser/ui/libgtk2ui/g_object_destructor_filo.cc',
|
'chromium_src/chrome/browser/ui/libgtk2ui/g_object_destructor_filo.cc',
|
||||||
'chrome/browser/ui/libgtk2ui/g_object_destructor_filo.h',
|
'chromium_src/chrome/browser/ui/libgtk2ui/g_object_destructor_filo.h',
|
||||||
'chrome/browser/ui/libgtk2ui/gtk2_signal.h',
|
'chromium_src/chrome/browser/ui/libgtk2ui/gtk2_signal.h',
|
||||||
'chrome/browser/ui/libgtk2ui/gtk2_signal_registrar.cc',
|
'chromium_src/chrome/browser/ui/libgtk2ui/gtk2_signal_registrar.cc',
|
||||||
'chrome/browser/ui/libgtk2ui/gtk2_signal_registrar.h',
|
'chromium_src/chrome/browser/ui/libgtk2ui/gtk2_signal_registrar.h',
|
||||||
'chrome/browser/ui/libgtk2ui/skia_utils_gtk2.cc',
|
'chromium_src/chrome/browser/ui/libgtk2ui/skia_utils_gtk2.cc',
|
||||||
'chrome/browser/ui/libgtk2ui/skia_utils_gtk2.h',
|
'chromium_src/chrome/browser/ui/libgtk2ui/skia_utils_gtk2.h',
|
||||||
'chrome/browser/ui/views/status_icons/status_tray_state_changer_win.cc',
|
'chromium_src/chrome/browser/ui/views/status_icons/status_tray_state_changer_win.cc',
|
||||||
'chrome/browser/ui/views/status_icons/status_tray_state_changer_win.h',
|
'chromium_src/chrome/browser/ui/views/status_icons/status_tray_state_changer_win.h',
|
||||||
|
'chromium_src/ui/base/accelerators/platform_accelerator_gtk.cc',
|
||||||
|
'chromium_src/ui/base/accelerators/platform_accelerator_gtk.h',
|
||||||
|
'chromium_src/ui/base/x/active_window_watcher_x.cc',
|
||||||
|
'chromium_src/ui/base/x/active_window_watcher_x.h',
|
||||||
|
'chromium_src/ui/base/x/active_window_watcher_x_observer.h',
|
||||||
|
'chromium_src/ui/base/x/root_window_property_watcher_x.cc',
|
||||||
|
'chromium_src/ui/base/x/root_window_property_watcher_x.h',
|
||||||
|
'chromium_src/ui/base/x/work_area_watcher_x.cc',
|
||||||
|
'chromium_src/ui/base/x/work_area_watcher_x.h',
|
||||||
|
'chromium_src/ui/base/x/x11_util.cc',
|
||||||
|
'chromium_src/ui/events/keycodes/keyboard_code_conversion_gtk.cc',
|
||||||
|
'chromium_src/ui/events/keycodes/keyboard_code_conversion_gtk.h',
|
||||||
|
'chromium_src/ui/gfx/gfx_gtk_util.cc',
|
||||||
|
'chromium_src/ui/gfx/gtk_util.h',
|
||||||
'<@(native_mate_files)',
|
'<@(native_mate_files)',
|
||||||
],
|
],
|
||||||
'framework_sources': [
|
'framework_sources': [
|
||||||
|
@ -442,6 +448,7 @@
|
||||||
],
|
],
|
||||||
'include_dirs': [
|
'include_dirs': [
|
||||||
'.',
|
'.',
|
||||||
|
'chromium_src',
|
||||||
'vendor/brightray',
|
'vendor/brightray',
|
||||||
'vendor/native_mate',
|
'vendor/native_mate',
|
||||||
# Include directories for uv and node.
|
# Include directories for uv and node.
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "atom/browser/ui/gtk/active_window_watcher_x.h"
|
|
||||||
#include "atom/common/draggable_region.h"
|
#include "atom/common/draggable_region.h"
|
||||||
#include "atom/common/options_switches.h"
|
#include "atom/common/options_switches.h"
|
||||||
#include "base/environment.h"
|
#include "base/environment.h"
|
||||||
|
@ -21,6 +20,7 @@
|
||||||
#include "native_mate/dictionary.h"
|
#include "native_mate/dictionary.h"
|
||||||
#include "ui/base/accelerators/platform_accelerator_gtk.h"
|
#include "ui/base/accelerators/platform_accelerator_gtk.h"
|
||||||
#include "ui/base/models/simple_menu_model.h"
|
#include "ui/base/models/simple_menu_model.h"
|
||||||
|
#include "ui/base/x/active_window_watcher_x.h"
|
||||||
#include "ui/base/x/x11_util.h"
|
#include "ui/base/x/x11_util.h"
|
||||||
#include "ui/gfx/font_render_params_linux.h"
|
#include "ui/gfx/font_render_params_linux.h"
|
||||||
#include "ui/gfx/gtk_util.h"
|
#include "ui/gfx/gtk_util.h"
|
||||||
|
|
|
@ -0,0 +1,93 @@
|
||||||
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#include "ui/base/accelerators/platform_accelerator_gtk.h"
|
||||||
|
|
||||||
|
#include "ui/events/keycodes/keyboard_code_conversion_gtk.h"
|
||||||
|
|
||||||
|
namespace ui {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
int GdkModifierToEventFlag(GdkModifierType gdk_modifier) {
|
||||||
|
int event_flags = 0;
|
||||||
|
if (gdk_modifier & GDK_SHIFT_MASK)
|
||||||
|
event_flags |= EF_SHIFT_DOWN;
|
||||||
|
if (gdk_modifier & GDK_CONTROL_MASK)
|
||||||
|
event_flags |= EF_CONTROL_DOWN;
|
||||||
|
if (gdk_modifier & GDK_MOD1_MASK)
|
||||||
|
event_flags |= EF_ALT_DOWN;
|
||||||
|
return event_flags;
|
||||||
|
}
|
||||||
|
|
||||||
|
GdkModifierType EventFlagToGdkModifier(int event_flag) {
|
||||||
|
int modifier = 0;
|
||||||
|
if (event_flag & EF_SHIFT_DOWN)
|
||||||
|
modifier |= GDK_SHIFT_MASK;
|
||||||
|
if (event_flag & EF_CONTROL_DOWN)
|
||||||
|
modifier |= GDK_CONTROL_MASK;
|
||||||
|
if (event_flag & EF_ALT_DOWN)
|
||||||
|
modifier |= GDK_MOD1_MASK;
|
||||||
|
return static_cast<GdkModifierType>(modifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
PlatformAcceleratorGtk::PlatformAcceleratorGtk()
|
||||||
|
: gdk_key_code_(0),
|
||||||
|
gdk_modifier_(static_cast<GdkModifierType>(0)) {
|
||||||
|
}
|
||||||
|
|
||||||
|
PlatformAcceleratorGtk::PlatformAcceleratorGtk(guint gdk_key_code,
|
||||||
|
GdkModifierType gdk_modifier)
|
||||||
|
: gdk_key_code_(gdk_key_code),
|
||||||
|
gdk_modifier_(gdk_modifier) {
|
||||||
|
}
|
||||||
|
|
||||||
|
PlatformAcceleratorGtk::~PlatformAcceleratorGtk() {
|
||||||
|
}
|
||||||
|
|
||||||
|
scoped_ptr<PlatformAccelerator> PlatformAcceleratorGtk::CreateCopy() const {
|
||||||
|
scoped_ptr<PlatformAcceleratorGtk> copy(new PlatformAcceleratorGtk);
|
||||||
|
copy->gdk_key_code_ = gdk_key_code_;
|
||||||
|
copy->gdk_modifier_ = gdk_modifier_;
|
||||||
|
return scoped_ptr<PlatformAccelerator>(copy.release());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PlatformAcceleratorGtk::Equals(const PlatformAccelerator& rhs) const {
|
||||||
|
const PlatformAcceleratorGtk& rhs_gtk =
|
||||||
|
static_cast<const PlatformAcceleratorGtk&>(rhs);
|
||||||
|
return gdk_key_code_ == rhs_gtk.gdk_key_code_ &&
|
||||||
|
gdk_modifier_ == rhs_gtk.gdk_modifier_;
|
||||||
|
}
|
||||||
|
|
||||||
|
Accelerator AcceleratorForGdkKeyCodeAndModifier(guint gdk_key_code,
|
||||||
|
GdkModifierType gdk_modifier) {
|
||||||
|
ui::Accelerator accelerator(ui::WindowsKeyCodeForGdkKeyCode(gdk_key_code),
|
||||||
|
ui::GdkModifierToEventFlag(gdk_modifier));
|
||||||
|
scoped_ptr<PlatformAccelerator> platform_accelerator(
|
||||||
|
new PlatformAcceleratorGtk(gdk_key_code, gdk_modifier));
|
||||||
|
accelerator.set_platform_accelerator(platform_accelerator.Pass());
|
||||||
|
return accelerator;
|
||||||
|
}
|
||||||
|
|
||||||
|
guint GetGdkKeyCodeForAccelerator(const Accelerator& accelerator) {
|
||||||
|
if (accelerator.platform_accelerator()) {
|
||||||
|
return static_cast<const PlatformAcceleratorGtk*>(
|
||||||
|
accelerator.platform_accelerator())->gdk_key_code();
|
||||||
|
}
|
||||||
|
// The second parameter is false because accelerator keys are expressed in
|
||||||
|
// terms of the non-shift-modified key.
|
||||||
|
return GdkKeyCodeForWindowsKeyCode(accelerator.key_code(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
GdkModifierType GetGdkModifierForAccelerator(const Accelerator& accelerator) {
|
||||||
|
if (accelerator.platform_accelerator()) {
|
||||||
|
return static_cast<const PlatformAcceleratorGtk*>(
|
||||||
|
accelerator.platform_accelerator())->gdk_modifier();
|
||||||
|
}
|
||||||
|
return EventFlagToGdkModifier(accelerator.modifiers());
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace ui
|
49
chromium_src/ui/base/accelerators/platform_accelerator_gtk.h
Normal file
49
chromium_src/ui/base/accelerators/platform_accelerator_gtk.h
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#ifndef UI_BASE_ACCELERATORS_PLATFORM_ACCELERATOR_GTK_H_
|
||||||
|
#define UI_BASE_ACCELERATORS_PLATFORM_ACCELERATOR_GTK_H_
|
||||||
|
|
||||||
|
#include <gdk/gdk.h>
|
||||||
|
|
||||||
|
#include "base/compiler_specific.h"
|
||||||
|
#include "ui/base/accelerators/accelerator.h"
|
||||||
|
#include "ui/base/accelerators/platform_accelerator.h"
|
||||||
|
|
||||||
|
namespace ui {
|
||||||
|
|
||||||
|
class Accelerator;
|
||||||
|
|
||||||
|
// This is a GTK specific class for specifing accelerator keys.
|
||||||
|
class UI_BASE_EXPORT PlatformAcceleratorGtk : public PlatformAccelerator {
|
||||||
|
public:
|
||||||
|
PlatformAcceleratorGtk();
|
||||||
|
PlatformAcceleratorGtk(guint gdk_key_code, GdkModifierType gdk_modifier);
|
||||||
|
virtual ~PlatformAcceleratorGtk();
|
||||||
|
|
||||||
|
// PlatformAccelerator:
|
||||||
|
virtual scoped_ptr<PlatformAccelerator> CreateCopy() const OVERRIDE;
|
||||||
|
virtual bool Equals(const PlatformAccelerator& rhs) const OVERRIDE;
|
||||||
|
|
||||||
|
guint gdk_key_code() const { return gdk_key_code_; }
|
||||||
|
GdkModifierType gdk_modifier() const { return gdk_modifier_; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
guint gdk_key_code_;
|
||||||
|
GdkModifierType gdk_modifier_;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(PlatformAcceleratorGtk);
|
||||||
|
};
|
||||||
|
|
||||||
|
UI_BASE_EXPORT Accelerator AcceleratorForGdkKeyCodeAndModifier(
|
||||||
|
guint gdk_key_code,
|
||||||
|
GdkModifierType gdk_modifier);
|
||||||
|
UI_BASE_EXPORT guint
|
||||||
|
GetGdkKeyCodeForAccelerator(const Accelerator& accelerator);
|
||||||
|
UI_BASE_EXPORT GdkModifierType GetGdkModifierForAccelerator(
|
||||||
|
const Accelerator& accelerator);
|
||||||
|
|
||||||
|
} // namespace ui
|
||||||
|
|
||||||
|
#endif // UI_BASE_ACCELERATORS_PLATFORM_ACCELERATOR_GTK_H_
|
|
@ -2,14 +2,14 @@
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
#include "atom/browser/ui/gtk/active_window_watcher_x.h"
|
#include "ui/base/x/active_window_watcher_x.h"
|
||||||
|
|
||||||
#include <gdk/gdk.h>
|
#include <gdk/gdk.h>
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
|
|
||||||
#include "atom/browser/ui/gtk/active_window_watcher_x_observer.h"
|
|
||||||
#include "atom/browser/ui/gtk/root_window_property_watcher_x.h"
|
|
||||||
#include "base/memory/singleton.h"
|
#include "base/memory/singleton.h"
|
||||||
|
#include "ui/base/x/active_window_watcher_x_observer.h"
|
||||||
|
#include "ui/base/x/root_window_property_watcher_x.h"
|
||||||
#include "ui/base/x/x11_util.h"
|
#include "ui/base/x/x11_util.h"
|
||||||
#include "ui/gfx/gdk_compat.h"
|
#include "ui/gfx/gdk_compat.h"
|
||||||
#include "ui/gfx/gtk_compat.h"
|
#include "ui/gfx/gtk_compat.h"
|
|
@ -2,11 +2,12 @@
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
#ifndef ATOM_BROWSER_UI_GTK_ACTIVE_WINDOW_WATCHER_X_H_
|
#ifndef UI_BASE_X_ACTIVE_WINDOW_WATCHER_X_H_
|
||||||
#define ATOM_BROWSER_UI_GTK_ACTIVE_WINDOW_WATCHER_X_H_
|
#define UI_BASE_X_ACTIVE_WINDOW_WATCHER_X_H_
|
||||||
|
|
||||||
#include "base/basictypes.h"
|
#include "base/basictypes.h"
|
||||||
#include "base/observer_list.h"
|
#include "base/observer_list.h"
|
||||||
|
#include "ui/base/ui_base_export.h"
|
||||||
#include "ui/base/x/x11_util.h"
|
#include "ui/base/x/x11_util.h"
|
||||||
|
|
||||||
template <typename T> struct DefaultSingletonTraits;
|
template <typename T> struct DefaultSingletonTraits;
|
||||||
|
@ -22,7 +23,7 @@ class RootWindowPropertyWatcherX;
|
||||||
// This is a helper class that is used to keep track of which window the X
|
// This is a helper class that is used to keep track of which window the X
|
||||||
// window manager thinks is active. Add an Observer to listen for changes to
|
// window manager thinks is active. Add an Observer to listen for changes to
|
||||||
// the active window.
|
// the active window.
|
||||||
class ActiveWindowWatcherX {
|
class UI_BASE_EXPORT ActiveWindowWatcherX {
|
||||||
public:
|
public:
|
||||||
static ActiveWindowWatcherX* GetInstance();
|
static ActiveWindowWatcherX* GetInstance();
|
||||||
static void AddObserver(ActiveWindowWatcherXObserver* observer);
|
static void AddObserver(ActiveWindowWatcherXObserver* observer);
|
||||||
|
@ -56,4 +57,4 @@ class ActiveWindowWatcherX {
|
||||||
|
|
||||||
} // namespace ui
|
} // namespace ui
|
||||||
|
|
||||||
#endif // ATOM_BROWSER_UI_GTK_ACTIVE_WINDOW_WATCHER_X_H_
|
#endif // UI_BASE_X_ACTIVE_WINDOW_WATCHER_X_H_
|
|
@ -7,9 +7,11 @@
|
||||||
|
|
||||||
#include <gdk/gdk.h>
|
#include <gdk/gdk.h>
|
||||||
|
|
||||||
|
#include "ui/base/ui_base_export.h"
|
||||||
|
|
||||||
namespace ui {
|
namespace ui {
|
||||||
|
|
||||||
class ActiveWindowWatcherXObserver {
|
class UI_BASE_EXPORT ActiveWindowWatcherXObserver {
|
||||||
public:
|
public:
|
||||||
// |active_window| will be NULL if the active window isn't one of Chrome's.
|
// |active_window| will be NULL if the active window isn't one of Chrome's.
|
||||||
virtual void ActiveWindowChanged(GdkWindow* active_window) = 0;
|
virtual void ActiveWindowChanged(GdkWindow* active_window) = 0;
|
|
@ -2,14 +2,14 @@
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
#include "atom/browser/ui/gtk/root_window_property_watcher_x.h"
|
#include "ui/base/x/root_window_property_watcher_x.h"
|
||||||
|
|
||||||
#include <gdk/gdk.h>
|
#include <gdk/gdk.h>
|
||||||
#include <gdk/gdkx.h>
|
#include <gdk/gdkx.h>
|
||||||
|
|
||||||
#include "base/memory/singleton.h"
|
#include "base/memory/singleton.h"
|
||||||
#include "atom/browser/ui/gtk/active_window_watcher_x.h"
|
#include "ui/base/x/active_window_watcher_x.h"
|
||||||
#include "atom/browser/ui/gtk/work_area_watcher_x.h"
|
#include "ui/base/x/work_area_watcher_x.h"
|
||||||
|
|
||||||
namespace ui {
|
namespace ui {
|
||||||
|
|
|
@ -2,8 +2,8 @@
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
#ifndef ATOM_BROWSER_UI_GTK_ROOT_WINDOW_PROPERTY_WATCHER_X_H_
|
#ifndef UI_BASE_X_ROOT_WINDOW_PROPERTY_WATCHER_X_H_
|
||||||
#define ATOM_BROWSER_UI_GTK_ROOT_WINDOW_PROPERTY_WATCHER_X_H_
|
#define UI_BASE_X_ROOT_WINDOW_PROPERTY_WATCHER_X_H_
|
||||||
|
|
||||||
#include <gdk/gdk.h>
|
#include <gdk/gdk.h>
|
||||||
|
|
||||||
|
@ -13,7 +13,6 @@
|
||||||
template <typename T> struct DefaultSingletonTraits;
|
template <typename T> struct DefaultSingletonTraits;
|
||||||
|
|
||||||
namespace ui {
|
namespace ui {
|
||||||
|
|
||||||
namespace internal {
|
namespace internal {
|
||||||
|
|
||||||
// This class keeps track of changes to properties on the root window. This is
|
// This class keeps track of changes to properties on the root window. This is
|
||||||
|
@ -37,7 +36,6 @@ class RootWindowPropertyWatcherX {
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
|
|
||||||
} // namespace ui
|
} // namespace ui
|
||||||
|
|
||||||
#endif // ATOM_BROWSER_UI_GTK_ROOT_WINDOW_PROPERTY_WATCHER_X_H_
|
#endif // UI_BASE_X_ROOT_WINDOW_PROPERTY_WATCHER_X_H_
|
|
@ -2,11 +2,11 @@
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
#include "atom/browser/ui/gtk/work_area_watcher_x.h"
|
#include "ui/base/x/work_area_watcher_x.h"
|
||||||
|
|
||||||
#include "base/memory/singleton.h"
|
#include "base/memory/singleton.h"
|
||||||
#include "ui/base/work_area_watcher_observer.h"
|
#include "ui/base/work_area_watcher_observer.h"
|
||||||
#include "atom/browser/ui/gtk/root_window_property_watcher_x.h"
|
#include "ui/base/x/root_window_property_watcher_x.h"
|
||||||
#include "ui/base/x/x11_util.h"
|
#include "ui/base/x/x11_util.h"
|
||||||
|
|
||||||
namespace ui {
|
namespace ui {
|
|
@ -2,11 +2,12 @@
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
#ifndef ATOM_BROWSER_UI_GTK_WORK_AREA_WATCHER_X_H_
|
#ifndef UI_BASE_X_WORK_AREA_WATCHER_X_H_
|
||||||
#define ATOM_BROWSER_UI_GTK_WORK_AREA_WATCHER_X_H_
|
#define UI_BASE_X_WORK_AREA_WATCHER_X_H_
|
||||||
|
|
||||||
#include "base/basictypes.h"
|
#include "base/basictypes.h"
|
||||||
#include "base/observer_list.h"
|
#include "base/observer_list.h"
|
||||||
|
#include "ui/base/ui_base_export.h"
|
||||||
#include "ui/base/x/x11_util.h"
|
#include "ui/base/x/x11_util.h"
|
||||||
|
|
||||||
template <typename T> struct DefaultSingletonTraits;
|
template <typename T> struct DefaultSingletonTraits;
|
||||||
|
@ -21,7 +22,7 @@ class RootWindowPropertyWatcherX;
|
||||||
|
|
||||||
// This is a helper class that is used to keep track of changes to work area.
|
// This is a helper class that is used to keep track of changes to work area.
|
||||||
// Add an observer to track changes.
|
// Add an observer to track changes.
|
||||||
class WorkAreaWatcherX {
|
class UI_BASE_EXPORT WorkAreaWatcherX {
|
||||||
public:
|
public:
|
||||||
static WorkAreaWatcherX* GetInstance();
|
static WorkAreaWatcherX* GetInstance();
|
||||||
static void AddObserver(WorkAreaWatcherObserver* observer);
|
static void AddObserver(WorkAreaWatcherObserver* observer);
|
||||||
|
@ -51,4 +52,4 @@ class WorkAreaWatcherX {
|
||||||
|
|
||||||
} // namespace ui
|
} // namespace ui
|
||||||
|
|
||||||
#endif // ATOM_BROWSER_UI_GTK_WORK_AREA_WATCHER_X_H_
|
#endif // UI_BASE_X_WORK_AREA_WATCHER_X_H_
|
|
@ -0,0 +1,85 @@
|
||||||
|
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com
|
||||||
|
* Copyright (C) 2007 Holger Hans Peter Freyther
|
||||||
|
* Copyright (C) 2008 Collabora, Ltd. All rights reserved.
|
||||||
|
* Copyright (C) 2008, 2009 Google Inc.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
|
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// WindowsKeyCodeForGdkKeyCode is copied from platform/gtk/KeyEventGtk.cpp
|
||||||
|
|
||||||
|
#include "ui/events/keycodes/keyboard_code_conversion_gtk.h"
|
||||||
|
|
||||||
|
#include <gdk/gdk.h>
|
||||||
|
#include <gdk/gdkkeysyms.h>
|
||||||
|
#include <X11/keysym.h>
|
||||||
|
|
||||||
|
#include "base/basictypes.h"
|
||||||
|
#include "build/build_config.h"
|
||||||
|
#include "ui/events/keycodes/keyboard_code_conversion_x.h"
|
||||||
|
#include "ui/events/keycodes/keyboard_codes_posix.h"
|
||||||
|
|
||||||
|
namespace ui {
|
||||||
|
|
||||||
|
KeyboardCode WindowsKeyCodeForGdkKeyCode(int keycode) {
|
||||||
|
// Gdk key codes (e.g. GDK_BackSpace) and X keysyms (e.g. XK_BackSpace) share
|
||||||
|
// the same values.
|
||||||
|
return KeyboardCodeFromXKeysym(keycode);
|
||||||
|
}
|
||||||
|
|
||||||
|
int GdkKeyCodeForWindowsKeyCode(KeyboardCode keycode, bool shift) {
|
||||||
|
// Gdk key codes and X keysyms share the same values.
|
||||||
|
return XKeysymForWindowsKeyCode(keycode, shift);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Just in case, test whether Gdk key codes match X ones.
|
||||||
|
COMPILE_ASSERT(GDK_KP_0 == XK_KP_0, keycode_check);
|
||||||
|
COMPILE_ASSERT(GDK_A == XK_A, keycode_check);
|
||||||
|
COMPILE_ASSERT(GDK_Escape == XK_Escape, keycode_check);
|
||||||
|
COMPILE_ASSERT(GDK_F1 == XK_F1, keycode_check);
|
||||||
|
COMPILE_ASSERT(GDK_Kanji == XK_Kanji, keycode_check);
|
||||||
|
COMPILE_ASSERT(GDK_Page_Up == XK_Page_Up, keycode_check);
|
||||||
|
COMPILE_ASSERT(GDK_Tab == XK_Tab, keycode_check);
|
||||||
|
COMPILE_ASSERT(GDK_a == XK_a, keycode_check);
|
||||||
|
COMPILE_ASSERT(GDK_space == XK_space, keycode_check);
|
||||||
|
|
||||||
|
int GdkNativeKeyCodeForWindowsKeyCode(KeyboardCode keycode, bool shift) {
|
||||||
|
int keyval = GdkKeyCodeForWindowsKeyCode(keycode, shift);
|
||||||
|
GdkKeymapKey* keys;
|
||||||
|
gint n_keys;
|
||||||
|
|
||||||
|
int native_keycode = 0;
|
||||||
|
if (keyval && gdk_keymap_get_entries_for_keyval(0, keyval, &keys, &n_keys)) {
|
||||||
|
native_keycode = keys[0].keycode;
|
||||||
|
g_free(keys);
|
||||||
|
}
|
||||||
|
|
||||||
|
return native_keycode;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace ui
|
|
@ -0,0 +1,58 @@
|
||||||
|
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
|
||||||
|
* Copyright (C) 2006 Michael Emmel mike.emmel@gmail.com
|
||||||
|
* Copyright (C) 2007 Holger Hans Peter Freyther
|
||||||
|
* Copyright (C) 2008 Collabora, Ltd. All rights reserved.
|
||||||
|
* Copyright (C) 2008, 2009 Google Inc.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
|
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// WindowsKeyCodeForGdkKeyCode is copied from platform/gtk/KeyEventGtk.cpp
|
||||||
|
|
||||||
|
#ifndef UI_EVENTS_KEYCODES_KEYBOARD_CODE_CONVERSION_GTK_H_
|
||||||
|
#define UI_EVENTS_KEYCODES_KEYBOARD_CODE_CONVERSION_GTK_H_
|
||||||
|
|
||||||
|
#include "ui/events/events_base_export.h"
|
||||||
|
#include "ui/events/keycodes/keyboard_codes_posix.h"
|
||||||
|
|
||||||
|
typedef struct _GdkEventKey GdkEventKey;
|
||||||
|
|
||||||
|
namespace ui {
|
||||||
|
|
||||||
|
EVENTS_BASE_EXPORT KeyboardCode WindowsKeyCodeForGdkKeyCode(int keycode);
|
||||||
|
|
||||||
|
EVENTS_BASE_EXPORT int GdkKeyCodeForWindowsKeyCode(KeyboardCode keycode,
|
||||||
|
bool shift);
|
||||||
|
|
||||||
|
// For WebKit DRT testing: simulate the native keycode for the given
|
||||||
|
// input |keycode|. Return the native keycode.
|
||||||
|
EVENTS_BASE_EXPORT int GdkNativeKeyCodeForWindowsKeyCode(KeyboardCode keycode,
|
||||||
|
bool shift);
|
||||||
|
|
||||||
|
} // namespace ui
|
||||||
|
|
||||||
|
#endif // UI_EVENTS_KEYCODES_KEYBOARD_CODE_CONVERSION_GTK_H_
|
192
chromium_src/ui/gfx/gfx_gtk_util.cc
Normal file
192
chromium_src/ui/gfx/gfx_gtk_util.cc
Normal file
|
@ -0,0 +1,192 @@
|
||||||
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#include "ui/gfx/gtk_util.h"
|
||||||
|
|
||||||
|
#include <gdk/gdk.h>
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include "base/basictypes.h"
|
||||||
|
#include "base/command_line.h"
|
||||||
|
#include "base/memory/scoped_ptr.h"
|
||||||
|
#include "third_party/skia/include/core/SkBitmap.h"
|
||||||
|
#include "third_party/skia/include/core/SkUnPreMultiply.h"
|
||||||
|
#include "ui/gfx/rect.h"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
// A process wide singleton that manages our usage of gdk cursors.
|
||||||
|
// gdk_cursor_new() hits the disk in several places and GdkCursor instances can
|
||||||
|
// be reused throughout the process.
|
||||||
|
class GdkCursorCache {
|
||||||
|
public:
|
||||||
|
GdkCursorCache() {}
|
||||||
|
~GdkCursorCache() {
|
||||||
|
for (GdkCursorMap::iterator i(cursors_.begin()); i != cursors_.end(); ++i) {
|
||||||
|
gdk_cursor_unref(i->second);
|
||||||
|
}
|
||||||
|
cursors_.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
GdkCursor* GetCursorImpl(GdkCursorType type) {
|
||||||
|
GdkCursorMap::iterator it = cursors_.find(type);
|
||||||
|
GdkCursor* cursor = NULL;
|
||||||
|
if (it == cursors_.end()) {
|
||||||
|
cursor = gdk_cursor_new(type);
|
||||||
|
cursors_.insert(std::make_pair(type, cursor));
|
||||||
|
} else {
|
||||||
|
cursor = it->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
// It is not necessary to add a reference here. The callers can ref the
|
||||||
|
// cursor if they need it for something.
|
||||||
|
return cursor;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
typedef std::map<GdkCursorType, GdkCursor*> GdkCursorMap;
|
||||||
|
GdkCursorMap cursors_;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(GdkCursorCache);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
namespace gfx {
|
||||||
|
|
||||||
|
static void CommonInitFromCommandLine(const CommandLine& command_line,
|
||||||
|
void (*init_func)(gint*, gchar***)) {
|
||||||
|
const std::vector<std::string>& args = command_line.argv();
|
||||||
|
int argc = args.size();
|
||||||
|
scoped_ptr<char *[]> argv(new char *[argc + 1]);
|
||||||
|
for (size_t i = 0; i < args.size(); ++i) {
|
||||||
|
// TODO(piman@google.com): can gtk_init modify argv? Just being safe
|
||||||
|
// here.
|
||||||
|
argv[i] = strdup(args[i].c_str());
|
||||||
|
}
|
||||||
|
argv[argc] = NULL;
|
||||||
|
char **argv_pointer = argv.get();
|
||||||
|
|
||||||
|
init_func(&argc, &argv_pointer);
|
||||||
|
for (size_t i = 0; i < args.size(); ++i) {
|
||||||
|
free(argv[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GtkInitFromCommandLine(const CommandLine& command_line) {
|
||||||
|
CommonInitFromCommandLine(command_line, gtk_init);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GdkInitFromCommandLine(const CommandLine& command_line) {
|
||||||
|
CommonInitFromCommandLine(command_line, gdk_init);
|
||||||
|
}
|
||||||
|
|
||||||
|
GdkPixbuf* GdkPixbufFromSkBitmap(const SkBitmap& bitmap) {
|
||||||
|
if (bitmap.isNull())
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
SkAutoLockPixels lock_pixels(bitmap);
|
||||||
|
|
||||||
|
int width = bitmap.width();
|
||||||
|
int height = bitmap.height();
|
||||||
|
|
||||||
|
GdkPixbuf* pixbuf = gdk_pixbuf_new(
|
||||||
|
GDK_COLORSPACE_RGB, // The only colorspace gtk supports.
|
||||||
|
TRUE, // There is an alpha channel.
|
||||||
|
8,
|
||||||
|
width, height);
|
||||||
|
|
||||||
|
// SkBitmaps are premultiplied, we need to unpremultiply them.
|
||||||
|
const int kBytesPerPixel = 4;
|
||||||
|
uint8* divided = gdk_pixbuf_get_pixels(pixbuf);
|
||||||
|
|
||||||
|
for (int y = 0, i = 0; y < height; y++) {
|
||||||
|
for (int x = 0; x < width; x++) {
|
||||||
|
uint32 pixel = bitmap.getAddr32(0, y)[x];
|
||||||
|
|
||||||
|
int alpha = SkColorGetA(pixel);
|
||||||
|
if (alpha != 0 && alpha != 255) {
|
||||||
|
SkColor unmultiplied = SkUnPreMultiply::PMColorToColor(pixel);
|
||||||
|
divided[i + 0] = SkColorGetR(unmultiplied);
|
||||||
|
divided[i + 1] = SkColorGetG(unmultiplied);
|
||||||
|
divided[i + 2] = SkColorGetB(unmultiplied);
|
||||||
|
divided[i + 3] = alpha;
|
||||||
|
} else {
|
||||||
|
divided[i + 0] = SkColorGetR(pixel);
|
||||||
|
divided[i + 1] = SkColorGetG(pixel);
|
||||||
|
divided[i + 2] = SkColorGetB(pixel);
|
||||||
|
divided[i + 3] = alpha;
|
||||||
|
}
|
||||||
|
i += kBytesPerPixel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return pixbuf;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SubtractRectanglesFromRegion(GdkRegion* region,
|
||||||
|
const std::vector<Rect>& cutouts) {
|
||||||
|
for (size_t i = 0; i < cutouts.size(); ++i) {
|
||||||
|
GdkRectangle rect = {
|
||||||
|
cutouts[i].x(), cutouts[i].y(), cutouts[i].width(), cutouts[i].height()
|
||||||
|
};
|
||||||
|
GdkRegion* rect_region = gdk_region_rectangle(&rect);
|
||||||
|
gdk_region_subtract(region, rect_region);
|
||||||
|
// TODO(deanm): It would be nice to be able to reuse the GdkRegion here.
|
||||||
|
gdk_region_destroy(rect_region);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GdkCursor* GetCursor(int type) {
|
||||||
|
CR_DEFINE_STATIC_LOCAL(GdkCursorCache, impl, ());
|
||||||
|
return impl.GetCursorImpl(static_cast<GdkCursorType>(type));
|
||||||
|
}
|
||||||
|
|
||||||
|
void InitRCStyles() {
|
||||||
|
static const char kRCText[] =
|
||||||
|
// Make our dialogs styled like the GNOME HIG.
|
||||||
|
//
|
||||||
|
// TODO(evanm): content-area-spacing was introduced in a later
|
||||||
|
// version of GTK, so we need to set that manually on all dialogs.
|
||||||
|
// Perhaps it would make sense to have a shared FixupDialog() function.
|
||||||
|
"style \"gnome-dialog\" {\n"
|
||||||
|
" xthickness = 12\n"
|
||||||
|
" GtkDialog::action-area-border = 0\n"
|
||||||
|
" GtkDialog::button-spacing = 6\n"
|
||||||
|
" GtkDialog::content-area-spacing = 18\n"
|
||||||
|
" GtkDialog::content-area-border = 12\n"
|
||||||
|
"}\n"
|
||||||
|
// Note we set it at the "application" priority, so users can override.
|
||||||
|
"widget \"GtkDialog\" style : application \"gnome-dialog\"\n"
|
||||||
|
|
||||||
|
// Make our about dialog special, so the image is flush with the edge.
|
||||||
|
"style \"about-dialog\" {\n"
|
||||||
|
" GtkDialog::action-area-border = 12\n"
|
||||||
|
" GtkDialog::button-spacing = 6\n"
|
||||||
|
" GtkDialog::content-area-spacing = 18\n"
|
||||||
|
" GtkDialog::content-area-border = 0\n"
|
||||||
|
"}\n"
|
||||||
|
"widget \"about-dialog\" style : application \"about-dialog\"\n";
|
||||||
|
|
||||||
|
gtk_rc_parse_string(kRCText);
|
||||||
|
}
|
||||||
|
|
||||||
|
base::TimeDelta GetCursorBlinkCycle() {
|
||||||
|
// From http://library.gnome.org/devel/gtk/unstable/GtkSettings.html, this is
|
||||||
|
// the default value for gtk-cursor-blink-time.
|
||||||
|
static const gint kGtkDefaultCursorBlinkTime = 1200;
|
||||||
|
|
||||||
|
gint cursor_blink_time = kGtkDefaultCursorBlinkTime;
|
||||||
|
gboolean cursor_blink = TRUE;
|
||||||
|
g_object_get(gtk_settings_get_default(),
|
||||||
|
"gtk-cursor-blink-time", &cursor_blink_time,
|
||||||
|
"gtk-cursor-blink", &cursor_blink,
|
||||||
|
NULL);
|
||||||
|
return cursor_blink ?
|
||||||
|
base::TimeDelta::FromMilliseconds(cursor_blink_time) :
|
||||||
|
base::TimeDelta();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace gfx
|
55
chromium_src/ui/gfx/gtk_util.h
Normal file
55
chromium_src/ui/gfx/gtk_util.h
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#ifndef UI_GFX_GTK_UTIL_H_
|
||||||
|
#define UI_GFX_GTK_UTIL_H_
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "base/time/time.h"
|
||||||
|
#include "ui/gfx/gfx_export.h"
|
||||||
|
|
||||||
|
typedef struct _GdkPixbuf GdkPixbuf;
|
||||||
|
typedef struct _GdkRegion GdkRegion;
|
||||||
|
typedef struct _GdkCursor GdkCursor;
|
||||||
|
|
||||||
|
class SkBitmap;
|
||||||
|
|
||||||
|
namespace base {
|
||||||
|
class CommandLine;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace gfx {
|
||||||
|
|
||||||
|
class Rect;
|
||||||
|
|
||||||
|
// Call gtk_init() / gdk_init() using the argc and argv from command_line.
|
||||||
|
// These init functions want an argc and argv that they can mutate; we provide
|
||||||
|
// those, but leave the original CommandLine unaltered.
|
||||||
|
GFX_EXPORT void GtkInitFromCommandLine(const base::CommandLine& command_line);
|
||||||
|
GFX_EXPORT void GdkInitFromCommandLine(const base::CommandLine& command_line);
|
||||||
|
|
||||||
|
// Convert and copy a SkBitmap to a GdkPixbuf. NOTE: this uses BGRAToRGBA, so
|
||||||
|
// it is an expensive operation. The returned GdkPixbuf will have a refcount of
|
||||||
|
// 1, and the caller is responsible for unrefing it when done.
|
||||||
|
GFX_EXPORT GdkPixbuf* GdkPixbufFromSkBitmap(const SkBitmap& bitmap);
|
||||||
|
|
||||||
|
// Modify the given region by subtracting the given rectangles.
|
||||||
|
GFX_EXPORT void SubtractRectanglesFromRegion(GdkRegion* region,
|
||||||
|
const std::vector<Rect>& cutouts);
|
||||||
|
|
||||||
|
// Returns a static instance of a GdkCursor* object, sharable across the
|
||||||
|
// process. Caller must gdk_cursor_ref() it if they want to assume ownership.
|
||||||
|
GFX_EXPORT GdkCursor* GetCursor(int type);
|
||||||
|
|
||||||
|
// Initialize some GTK settings so that our dialogs are consistent.
|
||||||
|
GFX_EXPORT void InitRCStyles();
|
||||||
|
|
||||||
|
// Queries GtkSettings for the cursor blink cycle time. Returns a 0 duration if
|
||||||
|
// blinking is disabled.
|
||||||
|
GFX_EXPORT base::TimeDelta GetCursorBlinkCycle();
|
||||||
|
|
||||||
|
} // namespace gfx
|
||||||
|
|
||||||
|
#endif // UI_GFX_GTK_UTIL_H_
|
|
@ -38,7 +38,7 @@ to understand the source code better.
|
||||||
* **api** - The implementation of common APIs, and foundations of
|
* **api** - The implementation of common APIs, and foundations of
|
||||||
atom-shell's built-in modules.
|
atom-shell's built-in modules.
|
||||||
* **lib** - Javascript part of the API implementation.
|
* **lib** - Javascript part of the API implementation.
|
||||||
* **chrome** - Source code modified from Chromium's `chrome` component.
|
* **chromium_src** - Source code that copied from Chromium.
|
||||||
* **docs** - Documentations.
|
* **docs** - Documentations.
|
||||||
* **spec** - Automatic tests.
|
* **spec** - Automatic tests.
|
||||||
* **atom.gyp** - Building rules of atom-shell.
|
* **atom.gyp** - Building rules of atom-shell.
|
||||||
|
|
Loading…
Reference in a new issue