[metacity] MetaFrameBorders: Add meta_frame_borders_clear



commit 7d519b3f45a5b739ac56b94a747c6b3fd31a672d
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Sun Sep 28 17:56:33 2014 +0300

    MetaFrameBorders: Add meta_frame_borders_clear
    
    Just a quick little commit to help clean things up for when we add invisible
    borders. Additionally, do a little housekeeping in preview-widget as well.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=644930
    
    NOTE: Patch copied from mutter and adapted for metacity.

 src/Makefile.am         |    2 ++
 src/core/common.c       |   34 ++++++++++++++++++++++++++++++++++
 src/core/frame.c        |   13 +++++++++++++
 src/include/common.h    |    4 ++++
 src/ui/preview-widget.c |   32 ++++++++++----------------------
 src/ui/preview-widget.h |    2 ++
 src/ui/theme.c          |   11 +++--------
 src/ui/ui.c             |    5 +----
 8 files changed, 69 insertions(+), 34 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 7cb2d85..35d1e32 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -75,6 +75,7 @@ metacity_SOURCES=                             \
        core/workspace.h                        \
        core/xprops.c                           \
        include/xprops.h                        \
+       core/common.c \
        include/common.h                        \
        include/core.h                          \
        include/ui.h                            \
@@ -110,6 +111,7 @@ libmetacity_private_la_SOURCES=                     \
        ui/gradient.h                           \
        core/util.c                             \
        include/util.h                          \
+       core/common.c \
        include/common.h                        \
        ui/preview-widget.c                     \
        ui/preview-widget.h                     \
diff --git a/src/core/common.c b/src/core/common.c
new file mode 100644
index 0000000..c7fe101
--- /dev/null
+++ b/src/core/common.c
@@ -0,0 +1,34 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+/* Metacity X window decorations */
+
+/* 
+ * Copyright (C) 2001 Havoc Pennington
+ * Copyright (C) 2003, 2004 Red Hat, Inc.
+ * Copyright (C) 2005 Elijah Newren
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+#include "common.h"
+
+void
+meta_frame_borders_clear (MetaFrameBorders *self)
+{
+  self->visible.top = 0;
+  self->visible.bottom = 0;
+  self->visible.left = 0;
+  self->visible.right = 0;
+}
diff --git a/src/core/frame.c b/src/core/frame.c
index 3b3a950..117b75a 100644
--- a/src/core/frame.c
+++ b/src/core/frame.c
@@ -298,6 +298,19 @@ meta_frame_get_flags (MetaFrame *frame)
   return flags;
 }
 
+/* Moved to core/common.c
+ */
+#if 0
+void
+meta_frame_borders_clear (MetaFrameBorders *self)
+{
+  self->visible.top = 0;
+  self->visible.bottom = 0;
+  self->visible.left = 0;
+  self->visible.right = 0;
+}
+#endif
+
 void
 meta_frame_calc_borders (MetaFrame        *frame,
                          MetaFrameBorders *borders)
diff --git a/src/include/common.h b/src/include/common.h
index d03da86..3764e62 100644
--- a/src/include/common.h
+++ b/src/include/common.h
@@ -267,6 +267,10 @@ struct _MetaFrameBorders
    */
   GtkBorder visible;
 };
+
+/* sets all dimensions to zero */
+void meta_frame_borders_clear (MetaFrameBorders *self);
+
 /* should investigate changing these to whatever most apps use */
 #define META_ICON_WIDTH 96
 #define META_ICON_HEIGHT 96
diff --git a/src/ui/preview-widget.c b/src/ui/preview-widget.c
index 8223700..458d9c0 100644
--- a/src/ui/preview-widget.c
+++ b/src/ui/preview-widget.c
@@ -91,10 +91,7 @@ meta_preview_init (MetaPreview *preview)
     META_FRAME_ALLOWS_SHADE |
     META_FRAME_ALLOWS_MOVE;
   
-  preview->borders.visible.left = -1;
-  preview->borders.visible.right = -1;
-  preview->borders.visible.top = -1;
-  preview->borders.visible.bottom = -1;
+  preview->borders_cached = FALSE;
 }
 
 GtkWidget*
@@ -165,23 +162,17 @@ ensure_info (MetaPreview *preview)
       pango_font_description_free (font_desc);
     }
 
-  if (preview->borders.visible.top < 0)
+  if (!preview->borders_cached)
     {
       if (preview->theme)
-        {
-          meta_theme_get_frame_borders (preview->theme,
-                                        preview->type,
-                                        preview->text_height,
-                                        preview->flags,
-                                        &preview->borders);
-        }
+        meta_theme_get_frame_borders (preview->theme,
+                                      preview->type,
+                                      preview->text_height,
+                                      preview->flags,
+                                      &preview->borders);
       else
-        {
-          preview->borders.visible.top = 0;
-          preview->borders.visible.bottom = 0;
-          preview->borders.visible.left = 0;
-          preview->borders.visible.right = 0;
-        }
+        meta_frame_borders_clear (&preview->borders);
+      preview->borders_cached = TRUE;
     }
 }
 
@@ -361,10 +352,7 @@ clear_cache (MetaPreview *preview)
       preview->layout = NULL;
     }
 
-  preview->borders.visible.left = -1;
-  preview->borders.visible.right = -1;
-  preview->borders.visible.top = -1;
-  preview->borders.visible.bottom = -1;
+  preview->borders_cached = FALSE;
 }
 
 void
diff --git a/src/ui/preview-widget.h b/src/ui/preview-widget.h
index e04c9eb..ad61a66 100644
--- a/src/ui/preview-widget.h
+++ b/src/ui/preview-widget.h
@@ -48,6 +48,8 @@ struct _MetaPreview
   int text_height;
 
   MetaFrameBorders borders;
+  guint            borders_cached : 1;
+
   MetaButtonLayout button_layout;
 };
 
diff --git a/src/ui/theme.c b/src/ui/theme.c
index b671637..72c5cd3 100644
--- a/src/ui/theme.c
+++ b/src/ui/theme.c
@@ -423,10 +423,8 @@ meta_frame_layout_get_borders (const MetaFrameLayout *layout,
 
   if (flags & META_FRAME_FULLSCREEN)
     {
-      borders->visible.top = 0;
-      borders->visible.bottom = 0;
-      borders->visible.left = 0;
-      borders->visible.right = 0;
+      meta_frame_borders_clear (borders);
+      return;
     }
 }
 
@@ -5479,10 +5477,7 @@ meta_theme_get_frame_borders (MetaTheme        *theme,
 
   style = theme_get_style (theme, type, flags);
 
-  borders->visible.top = 0;
-  borders->visible.left = 0;
-  borders->visible.right = 0;
-  borders->visible.bottom = 0;
+  meta_frame_borders_clear (borders);
 
   /* Parser is not supposed to allow this currently */
   if (style == NULL)
diff --git a/src/ui/ui.c b/src/ui/ui.c
index 25809d5..2b225ae 100644
--- a/src/ui/ui.c
+++ b/src/ui/ui.c
@@ -732,10 +732,7 @@ meta_ui_theme_get_frame_borders (MetaUI           *ui,
     }
   else
     {
-      borders->visible.top = 0;
-      borders->visible.bottom = 0;
-      borders->visible.left = 0;
-      borders->visible.right = 0;
+      meta_frame_borders_clear (borders);
     }
 
   if (style != NULL)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]