[PATCH] add basic support for other platforms

[email protected] Sat, 04 Jul 2015 19:53:28 +0000
Newsgroups gmane.comp.gnome.nautilus
Message-ID <[email protected]>
 From 0a3b39fcfaa802b27ffe6ddff33d5070fea2d541 Mon Sep 17 00:00:00 2001
 From: canatan <[email protected]>
Date: Fri, 3 Jul 2015 00:29:16 +0000
Subject: [PATCH] Add basic support for platforms

Hi list.there are no big thinks here.i just move x11 stuff into ifdefs
according to gdk defines(gdkconfig.h) which is GDK_WINDOWING_X11
as you know
from here https://bugzilla.gnome.org/show_bug.cgi?id=751625
gtk is able to build platforms that it has not x11 libs other than
win32 or quartz. eg. a wayland platform that hasn't x11 stuff.
i tested it both on x11 an wayland.
just a minor issue that complains on wayland:
gtk_widget_size_allocate():attempt to allocate widget with width -14
it is based commit: 76c63eb3ee13affac097d6258a8fcc79ce92a321
Best reviews.
---
  configure.ac                                    |  1 -
  eel/eel-gdk-extensions.c                        |  9 ++++++--
  eel/eel-gtk-extensions.c                        |  6 +++--
  libnautilus-private/nautilus-canvas-container.c | 29 
+++++++++++++++++++------
  src/nautilus-desktop-canvas-view.c              | 24 
+++++++++++++++-----
  src/nautilus-desktop-window.c                   |  7 ++++++
  src/nautilus-view.c                             |  5 +++++
  src/nautilus-window.c                           | 12 ++++++++--
  8 files changed, 73 insertions(+), 20 deletions(-)

diff --git a/configure.ac b/configure.ac
index 8efaf87..2f89c0d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -258,7 +258,6 @@ PKG_CHECK_MODULES(COMMON, [
  	gail-3.0
  	gnome-desktop-3.0 >= gnome_desktop_minver
  	libxml-2.0 >= xml_minver
-	x11
  ])

  dnl additional nautilus libs
diff --git a/eel/eel-gdk-extensions.c b/eel/eel-gdk-extensions.c
index 49ff0d2..d288fc9 100644
--- a/eel/eel-gdk-extensions.c
+++ b/eel/eel-gdk-extensions.c
@@ -30,7 +30,11 @@
  #include "eel-string.h"
  #include <gdk-pixbuf/gdk-pixbuf.h>
  #include <gdk/gdk.h>
+
+#ifdef GDK_WINDOWING_X11
  #include <gdk/gdkx.h>
+#endif
+
  #include <stdlib.h>
  #include <pango/pango.h>

@@ -38,8 +42,9 @@ EelGdkGeometryFlags
  eel_gdk_parse_geometry (const char *string, int *x_return, int 
*y_return,
  			     guint *width_return, guint *height_return)
  {
+	EelGdkGeometryFlags gdk_flags = EEL_GDK_NO_VALUE;
+#ifdef GDK_WINDOWING_X11
  	int x11_flags;
-	EelGdkGeometryFlags gdk_flags;

  	g_return_val_if_fail (string != NULL, EEL_GDK_NO_VALUE);
  	g_return_val_if_fail (x_return != NULL, EEL_GDK_NO_VALUE);
@@ -69,6 +74,6 @@ eel_gdk_parse_geometry (const char *string, int 
*x_return, int *y_return,
  	if (x11_flags & YNegative) {
  		gdk_flags |= EEL_GDK_Y_NEGATIVE;
  	}
-
+#endif
  	return gdk_flags;
  }
diff --git a/eel/eel-gtk-extensions.c b/eel/eel-gtk-extensions.c
index 38d7c00..aac044e 100644
--- a/eel/eel-gtk-extensions.c
+++ b/eel/eel-gtk-extensions.c
@@ -32,11 +32,13 @@
  #include "eel-gnome-extensions.h"
  #include "eel-string.h"

-#include <X11/Xlib.h>
+#ifdef GDK_WINDOWING_X11
  #include <X11/Xatom.h>
+#include <gdk/gdkx.h>
+#endif
+
  #include <gdk/gdk.h>
  #include <gdk/gdkprivate.h>
-#include <gdk/gdkx.h>
  #include <gtk/gtk.h>
  #include <glib/gi18n-lib.h>
  #include <math.h>
diff --git a/libnautilus-private/nautilus-canvas-container.c 
b/libnautilus-private/nautilus-canvas-container.c
index 67a8cb8..c578b3b 100644
--- a/libnautilus-private/nautilus-canvas-container.c
+++ b/libnautilus-private/nautilus-canvas-container.c
@@ -25,9 +25,13 @@
  */

  #include <config.h>
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
  #include <math.h>
+
+#ifdef GDK_WINDOWING_X11
+#include <X11/Xatom.h>
+#include <gdk/gdkx.h>
+#endif
+
  #include "nautilus-canvas-container.h"

  #include "nautilus-global-preferences.h"
@@ -42,7 +46,6 @@

  #include <gdk/gdkkeysyms.h>
  #include <gtk/gtk.h>
-#include <gdk/gdkx.h>
  #include <glib/gi18n.h>
  #include <stdio.h>
  #include <string.h>
@@ -2337,15 +2340,15 @@ static void
  get_rubber_color (NautilusCanvasContainer *container,
                    GdkRGBA *bgcolor,
                    GdkRGBA *bordercolor)
-{
-	Atom         real_type;
+{
+#ifdef GDK_WINDOWING_X11
+	Atom         representative_colors_atom,real_type;
+	Display     *display;
  	gint         result = -1;
  	gint         real_format;
  	gulong       items_read = 0;
  	gulong       items_left = 0;
  	gchar       *colors;
-	Atom         representative_colors_atom;
-	Display     *display;

  	if (nautilus_canvas_container_get_is_desktop (container)) {
  		representative_colors_atom = gdk_x11_get_xatom_by_name 
("_GNOME_BACKGROUND_REPRESENTATIVE_COLORS");
@@ -2404,6 +2407,18 @@ get_rubber_color (NautilusCanvasContainer 
*container,

  		gtk_style_context_restore (context);
  	}
+#endif
+
+	GtkStyleContext *context;
+
+	context = gtk_widget_get_style_context (GTK_WIDGET (container));
+	gtk_style_context_save (context);
+	gtk_style_context_add_class (context, GTK_STYLE_CLASS_RUBBERBAND);
+
+	gtk_style_context_get_background_color (context, 
GTK_STATE_FLAG_NORMAL, bgcolor);
+	gtk_style_context_get_border_color (context, GTK_STATE_FLAG_NORMAL, 
bordercolor);
+
+	gtk_style_context_restore (context);
  }

  static void
diff --git a/src/nautilus-desktop-canvas-view.c 
b/src/nautilus-desktop-canvas-view.c
index 6890743..251fe9a 100644
--- a/src/nautilus-desktop-canvas-view.c
+++ b/src/nautilus-desktop-canvas-view.c
@@ -31,13 +31,16 @@
  #include "nautilus-canvas-view-container.h"
  #include "nautilus-view.h"

+#ifdef GDK_WINDOWING_X11
  #include <X11/Xatom.h>
+#include <gdk/gdkx.h>
+#endif
+
  #include <gtk/gtk.h>
  #include <eel/eel-glib-extensions.h>
  #include <eel/eel-gtk-extensions.h>
  #include <eel/eel-vfs-extensions.h>
  #include <fcntl.h>
-#include <gdk/gdkx.h>
  #include <glib/gi18n.h>
  #include <libnautilus-private/nautilus-desktop-icon-file.h>
  #include <libnautilus-private/nautilus-directory-notify.h>
@@ -125,14 +128,16 @@ static void
  net_workarea_changed (NautilusDesktopCanvasView *canvas_view,
  		      GdkWindow         *window)
  {
-	long *nworkareas = NULL;
-	long *workareas = NULL;
-	GdkAtom type_returned;
-	int format_returned;
  	int length_returned;
  	NautilusCanvasContainer *canvas_container;
  	GdkScreen *screen;
+	long *workareas = NULL;
+	long *nworkareas = NULL;

+#ifdef GDK_WINDOWING_X11
+	GdkAtom type_returned;
+	int format_returned;
+
  	g_return_if_fail (NAUTILUS_IS_DESKTOP_CANVAS_VIEW (canvas_view));

  	canvas_container = get_canvas_container (canvas_view);
@@ -196,6 +201,12 @@ net_workarea_changed (NautilusDesktopCanvasView 
*canvas_view,
  		canvas_container_set_workarea
  			(canvas_container, screen, workareas, length_returned / sizeof 
(long));
  	}
+#endif
+
+	screen = gdk_window_get_screen (window);
+
+	canvas_container_set_workarea
+			(canvas_container, screen, workareas, length_returned / sizeof 
(long));

  	if (nworkareas != NULL)
  		g_free (nworkareas);
@@ -209,6 +220,7 @@ desktop_canvas_view_property_filter (GdkXEvent 
*gdk_xevent,
  				   GdkEvent *event,
  				   gpointer data)
  {
+#ifdef GDK_WINDOWING_X11
  	XEvent *xevent = gdk_xevent;
  	NautilusDesktopCanvasView *canvas_view;

@@ -222,7 +234,7 @@ desktop_canvas_view_property_filter (GdkXEvent 
*gdk_xevent,
  	default:
  		break;
  	}
-
+#endif
  	return GDK_FILTER_CONTINUE;
  }

diff --git a/src/nautilus-desktop-window.c 
b/src/nautilus-desktop-window.c
index 30197aa..7c95314 100644
--- a/src/nautilus-desktop-window.c
+++ b/src/nautilus-desktop-window.c
@@ -25,8 +25,11 @@
  #include "nautilus-desktop-window.h"
  #include "nautilus-window.h"

+#ifdef GDK_WINDOWING_X11
  #include <X11/Xatom.h>
  #include <gdk/gdkx.h>
+#endif
+
  #include <gtk/gtk.h>
  #include <gio/gio.h>
  #include <glib/gi18n.h>
@@ -114,6 +117,7 @@ selection_clear_event_cb (GtkWidget	        *widget,
  static void
  nautilus_desktop_window_init_selection (NautilusDesktopWindow *window)
  {
+#ifdef GDK_WINDOWING_X11
  	char selection_name[32];
  	GdkAtom selection_atom;
  	Window selection_owner;
@@ -156,6 +160,7 @@ nautilus_desktop_window_init_selection 
(NautilusDesktopWindow *window)
  			  G_CALLBACK (selection_clear_event_cb), window);

  	window->details->desktop_selection = selection_widget;
+#endif
  }

  static void
@@ -315,6 +320,7 @@ unrealize (GtkWidget *widget)
  static void
  set_wmspec_desktop_hint (GdkWindow *window)
  {
+#ifdef GDK_WINDOWING_X11
  	GdkAtom atom;

  	atom = gdk_atom_intern ("_NET_WM_WINDOW_TYPE_DESKTOP", FALSE);
@@ -323,6 +329,7 @@ set_wmspec_desktop_hint (GdkWindow *window)
  			     gdk_atom_intern ("_NET_WM_WINDOW_TYPE", FALSE),
  			     gdk_x11_xatom_to_atom (XA_ATOM), 32,
  			     GDK_PROP_MODE_REPLACE, (guchar *) &atom, 1);
+#endif
  }

  static void
diff --git a/src/nautilus-view.c b/src/nautilus-view.c
index 160c636..df6046f 100644
--- a/src/nautilus-view.c
+++ b/src/nautilus-view.c
@@ -43,7 +43,10 @@
  #include "nautilus-empty-view.h"
  #endif

+#ifdef GDK_WINDOWING_X11
  #include <gdk/gdkx.h>
+#endif
+
  #include <gdk/gdkkeysyms.h>
  #include <gtk/gtk.h>
  #include <glib/gi18n.h>
@@ -816,6 +819,7 @@ nautilus_view_preview_files (NautilusView *view,
  			     GList *files,
  			     GArray *locations)
  {
+#ifdef GDK_WINDOWING_X11
  	gchar *uri;
  	guint xid;
  	GtkWidget *toplevel;
@@ -827,6 +831,7 @@ nautilus_view_preview_files (NautilusView *view,
  	nautilus_previewer_call_show_file (uri, xid, TRUE);

  	g_free (uri);
+#endif
  }

  void
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index d315316..b156e65 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -47,13 +47,18 @@
  #include <eel/eel-gtk-extensions.h>
  #include <eel/eel-stock-dialogs.h>
  #include <gdk-pixbuf/gdk-pixbuf.h>
-#include <gdk/gdkx.h>
  #include <gdk/gdkkeysyms.h>
  #include <gtk/gtk.h>
  #include <glib/gi18n.h>
+
+#ifdef GDK_WINDOWING_X11
+#include <gdk/gdkx.h>
+#endif
+
  #ifdef HAVE_X11_XF86KEYSYM_H
  #include <X11/XF86keysym.h>
  #endif
+
  #include <libnautilus-private/nautilus-dnd.h>
  #include <libnautilus-private/nautilus-file-utilities.h>
  #include <libnautilus-private/nautilus-file-attributes.h>
@@ -1232,17 +1237,18 @@ static void
  format_cb (GtkMenuItem *item,
  	   gpointer     user_data)
  {
+#ifdef GDK_WINDOWING_X11
  	NautilusWindow *window = NAUTILUS_WINDOW (user_data);
  	GAppInfo *app_info;
  	gchar *cmdline, *device_identifier, *xid_string;
  	GVolume *volume;
-	gint xid;

  	volume = g_object_get_data (G_OBJECT (item), "nautilus-volume");

  	g_assert (volume != NULL && G_IS_VOLUME (volume));

  	device_identifier = g_volume_get_identifier (volume, 
G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
+
  	xid = (gint) gdk_x11_window_get_xid (gtk_widget_get_window (GTK_WIDGET 
(window)));
  	xid_string = g_strdup_printf ("%d", xid);

@@ -1251,6 +1257,7 @@ format_cb (GtkMenuItem *item,
  			       "--format-device ",
  			       "--xid ", xid_string,
  			       NULL);
+
  	app_info = g_app_info_create_from_commandline (cmdline, NULL, 0, 
NULL);
  	g_app_info_launch (app_info, NULL, NULL, NULL);

@@ -1258,6 +1265,7 @@ format_cb (GtkMenuItem *item,
  	g_free (device_identifier);
  	g_free (xid_string);
  	g_clear_object (&app_info);
+#endif
  }

  /* Destroy notification function used from g_object_set_data_full() */
-- 
2.4.5

-- 
nautilus-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/nautilus-list