Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(377)

Unified Diff: ui/base/x/x11_util.cc

Issue 7981030: aura: Have aura and aura_demo build and run without gtk on linux. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/base/x/x11_util.h ('k') | ui/ui.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/x/x11_util.cc
diff --git a/ui/base/x/x11_util.cc b/ui/base/x/x11_util.cc
index 82cdab78f54bc87e603501517f112e3db282c54e..39c2cff7c6f098fd1a951ce4113924f20b23bc70 100644
--- a/ui/base/x/x11_util.cc
+++ b/ui/base/x/x11_util.cc
@@ -8,10 +8,6 @@
#include "ui/base/x/x11_util.h"
-#include <gdk/gdk.h>
-#include <gdk/gdkx.h>
-#include <gtk/gtk.h>
-
#include <sys/ipc.h>
#include <sys/shm.h>
@@ -28,6 +24,18 @@
#include "ui/gfx/rect.h"
#include "ui/gfx/size.h"
+#if defined(TOOLKIT_USES_GTK)
+#include <gdk/gdk.h>
+#include <gdk/gdkx.h>
+#include <gtk/gtk.h>
+#else
+// TODO(sad): Use the new way of handling X errors when
+// http://codereview.chromium.org/7889040/ lands.
+#define gdk_error_trap_push()
+#define gdk_error_trap_pop() false
+#define gdk_flush()
+#endif
+
namespace ui {
namespace {
@@ -68,13 +76,20 @@ int DefaultX11IOErrorHandler(Display* d) {
_exit(1);
}
+Atom GetAtom(const char* name) {
+#if defined(TOOLKIT_USES_GTK)
+ return gdk_x11_get_xatom_by_name_for_display(
+ gdk_display_get_default(), name);
+#else
+ return XInternAtom(GetXDisplay(), name, false);
+#endif
+}
+
// Note: The caller should free the resulting value data.
bool GetProperty(XID window, const std::string& property_name, long max_length,
Atom* type, int* format, unsigned long* num_items,
unsigned char** property) {
- Atom property_atom = gdk_x11_get_xatom_by_name_for_display(
- gdk_display_get_default(), property_name.c_str());
-
+ Atom property_atom = GetAtom(property_name.c_str());
unsigned long remaining_bytes = 0;
return XGetWindowProperty(GetXDisplay(),
window,
@@ -93,7 +108,7 @@ bool GetProperty(XID window, const std::string& property_name, long max_length,
} // namespace
bool XDisplayExists() {
- return (gdk_display_get_default() != NULL);
+ return (GetXDisplay() != NULL);
}
Display* GetXDisplay() {
@@ -166,13 +181,14 @@ int GetDefaultScreen(Display* display) {
}
XID GetX11RootWindow() {
- return GDK_WINDOW_XID(gdk_get_default_root_window());
+ return DefaultRootWindow(GetXDisplay());
}
bool GetCurrentDesktop(int* desktop) {
return GetIntProperty(GetX11RootWindow(), "_NET_CURRENT_DESKTOP", desktop);
}
+#if defined(TOOLKIT_USES_GTK)
XID GetX11WindowFromGtkWidget(GtkWidget* widget) {
return GDK_WINDOW_XID(widget->window);
}
@@ -197,6 +213,7 @@ GtkWindow* GetGtkWindowFromX11Window(XID xid) {
void* GetVisualFromGtkWidget(GtkWidget* widget) {
return GDK_VISUAL_XVISUAL(gtk_widget_get_visual(widget));
}
+#endif // defined(TOOLKIT_USES_GTK)
int BitsPerPixelForPixmapDepth(Display* dpy, int depth) {
int count;
@@ -667,8 +684,7 @@ bool ChangeWindowDesktop(XID window, XID destination) {
XEvent event;
event.xclient.type = ClientMessage;
event.xclient.window = window;
- event.xclient.message_type = gdk_x11_get_xatom_by_name_for_display(
- gdk_display_get_default(), "_NET_WM_DESKTOP");
+ event.xclient.message_type = GetAtom("_NET_WM_DESKTOP");
event.xclient.format = 32;
event.xclient.data.l[0] = desktop;
event.xclient.data.l[1] = 1; // source indication
@@ -684,8 +700,7 @@ void SetDefaultX11ErrorHandlers() {
bool IsX11WindowFullScreen(XID window) {
// First check if _NET_WM_STATE property contains _NET_WM_STATE_FULLSCREEN.
- static Atom atom = gdk_x11_get_xatom_by_name_for_display(
- gdk_display_get_default(), "_NET_WM_STATE_FULLSCREEN");
+ static Atom atom = GetAtom("_NET_WM_STATE_FULLSCREEN");
std::vector<Atom> atom_properties;
if (GetAtomArrayProperty(window,
@@ -695,6 +710,7 @@ bool IsX11WindowFullScreen(XID window) {
!= atom_properties.end())
return true;
+#if defined(TOOLKIT_USES_GTK)
// As the last resort, check if the window size is as large as the main
// screen.
GdkRectangle monitor_rect;
@@ -708,6 +724,10 @@ bool IsX11WindowFullScreen(XID window) {
monitor_rect.y == window_rect.y() &&
monitor_rect.width == window_rect.width() &&
monitor_rect.height == window_rect.height();
+#else
+ NOTIMPLEMENTED();
+ return false;
+#endif
}
// ----------------------------------------------------------------------------
« no previous file with comments | « ui/base/x/x11_util.h ('k') | ui/ui.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698