]> code.delx.au - gnu-emacs/blobdiff - src/gtkutil.c
Port USE_STACK_LISP_OBJECTS fix to Clang
[gnu-emacs] / src / gtkutil.c
index 90683eba7b888d0caf0ddcb0b566e72aae3c75b6..14b76ce67ae05a3d8dd82cc8517ad089aec1b449 100644 (file)
@@ -1,6 +1,6 @@
 /* Functions for creating and updating GTK widgets.
 
-Copyright (C) 2003-2015 Free Software Foundation, Inc.
+Copyright (C) 2003-2016 Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -4084,43 +4084,46 @@ xg_page_setup_dialog (void)
 Lisp_Object
 xg_get_page_setup (void)
 {
-  Lisp_Object result, orientation_symbol;
-  GtkPageOrientation orientation;
+  Lisp_Object orientation_symbol;
 
   if (page_setup == NULL)
     page_setup = gtk_page_setup_new ();
-  result = list4 (Fcons (Qleft_margin,
-                        make_float (gtk_page_setup_get_left_margin (page_setup,
-                                                                    GTK_UNIT_POINTS))),
-                 Fcons (Qright_margin,
-                        make_float (gtk_page_setup_get_right_margin (page_setup,
-                                                                     GTK_UNIT_POINTS))),
-                 Fcons (Qtop_margin,
-                        make_float (gtk_page_setup_get_top_margin (page_setup,
-                                                                   GTK_UNIT_POINTS))),
-                 Fcons (Qbottom_margin,
-                        make_float (gtk_page_setup_get_bottom_margin (page_setup,
-                                                                      GTK_UNIT_POINTS))));
-  result = Fcons (Fcons (Qheight,
-                        make_float (gtk_page_setup_get_page_height (page_setup,
-                                                                    GTK_UNIT_POINTS))),
-                 result);
-  result = Fcons (Fcons (Qwidth,
-                        make_float (gtk_page_setup_get_page_width (page_setup,
-                                                                   GTK_UNIT_POINTS))),
-                 result);
-  orientation = gtk_page_setup_get_orientation (page_setup);
-  if (orientation == GTK_PAGE_ORIENTATION_PORTRAIT)
-    orientation_symbol = Qportrait;
-  else if (orientation == GTK_PAGE_ORIENTATION_LANDSCAPE)
-    orientation_symbol = Qlandscape;
-  else if (orientation == GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT)
-    orientation_symbol = Qreverse_portrait;
-  else if (orientation == GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE)
-    orientation_symbol = Qreverse_landscape;
-  result = Fcons (Fcons (Qorientation, orientation_symbol), result);
-
-  return result;
+
+  switch (gtk_page_setup_get_orientation (page_setup))
+    {
+    case GTK_PAGE_ORIENTATION_PORTRAIT:
+      orientation_symbol = Qportrait;
+      break;
+    case GTK_PAGE_ORIENTATION_LANDSCAPE:
+      orientation_symbol = Qlandscape;
+      break;
+    case GTK_PAGE_ORIENTATION_REVERSE_PORTRAIT:
+      orientation_symbol = Qreverse_portrait;
+      break;
+    case GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE:
+      orientation_symbol = Qreverse_landscape;
+      break;
+    default:
+      eassume (false);
+    }
+
+  return listn (CONSTYPE_HEAP, 7,
+               Fcons (Qorientation, orientation_symbol),
+#define MAKE_FLOAT_PAGE_SETUP(f)  make_float (f (page_setup, GTK_UNIT_POINTS))
+               Fcons (Qwidth,
+                      MAKE_FLOAT_PAGE_SETUP (gtk_page_setup_get_page_width)),
+               Fcons (Qheight,
+                      MAKE_FLOAT_PAGE_SETUP (gtk_page_setup_get_page_height)),
+               Fcons (Qleft_margin,
+                      MAKE_FLOAT_PAGE_SETUP (gtk_page_setup_get_left_margin)),
+               Fcons (Qright_margin,
+                      MAKE_FLOAT_PAGE_SETUP (gtk_page_setup_get_right_margin)),
+               Fcons (Qtop_margin,
+                      MAKE_FLOAT_PAGE_SETUP (gtk_page_setup_get_top_margin)),
+               Fcons (Qbottom_margin,
+                      MAKE_FLOAT_PAGE_SETUP (gtk_page_setup_get_bottom_margin))
+#undef MAKE_FLOAT_PAGE_SETUP
+               );
 }
 
 static void