[metacity] theme: change MetaStyleInfo parameter to theme variant string



commit e01ebe5c7a802d231dab568c59c7c7976dceb750
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Tue Feb 2 03:48:00 2016 +0200

    theme: change MetaStyleInfo parameter to theme variant string

 src/ui/frames.c         |   36 +++++++++++++-----------------------
 src/ui/frames.h         |    2 +-
 src/ui/preview-widget.c |   33 ++-------------------------------
 src/ui/preview-widget.h |    2 --
 src/ui/theme-viewer.c   |    6 +++---
 src/ui/theme.c          |   15 ++++++++++++---
 src/ui/theme.h          |    6 +++---
 src/ui/ui.c             |    9 +++------
 8 files changed, 37 insertions(+), 72 deletions(-)
---
diff --git a/src/ui/frames.c b/src/ui/frames.c
index ed219a2..c51ba53 100644
--- a/src/ui/frames.c
+++ b/src/ui/frames.c
@@ -487,7 +487,10 @@ meta_frames_ensure_layout (MetaFrames  *frames,
         }
       else
         {
-          font_desc = meta_style_info_create_font_desc (current, frame->style_info);
+          MetaStyleInfo *style_info;
+
+          style_info = meta_theme_get_style_info (current, frame->theme_variant);
+          font_desc = meta_style_info_create_font_desc (current, style_info);
           meta_frame_style_apply_scale (style, font_desc);
         }
 
@@ -543,7 +546,7 @@ meta_frames_calc_geometry (MetaFrames        *frames,
   meta_prefs_get_button_layout (&button_layout);
 
   meta_theme_calc_geometry (meta_theme_get_current (),
-                            frame->style_info,
+                            frame->theme_variant,
                             type,
                             frame->text_height,
                             flags,
@@ -605,13 +608,8 @@ static void
 meta_frames_attach_style (MetaFrames  *frames,
                           MetaUIFrame *frame)
 {
-  gboolean has_frame;
   char *variant = NULL;
   const char *variant_override;
-  MetaTheme *theme;
-
-  if (frame->style_info != NULL)
-    meta_style_info_unref (frame->style_info);
 
   variant_override = get_theme_variant_override (frames);
 
@@ -620,19 +618,11 @@ meta_frames_attach_style (MetaFrames  *frames,
   else
     meta_core_get (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
                    frame->xwindow,
-                   META_CORE_WINDOW_HAS_FRAME, &has_frame,
                    META_CORE_GET_THEME_VARIANT, &variant,
                    META_CORE_GET_END);
 
-  theme = meta_theme_get_current ();
-
-  if (variant == NULL || strcmp(variant, "normal") == 0)
-    frame->style_info = meta_style_info_ref (meta_theme_get_style_info (theme, NULL));
-  else
-    frame->style_info = meta_style_info_ref (meta_theme_get_style_info (theme, variant));
-
-  if (variant_override)
-    g_free (variant);
+  g_free (frame->theme_variant);
+  frame->theme_variant = variant_override ? variant : g_strdup (variant);
 }
 
 void
@@ -650,7 +640,7 @@ meta_frames_manage_window (MetaFrames *frames,
 
   gdk_window_set_user_data (frame->window, frames);
 
-  frame->style_info = NULL;
+  frame->theme_variant = NULL;
 
   /* Don't set event mask here, it's in frame.c */
 
@@ -697,7 +687,7 @@ meta_frames_unmanage_window (MetaFrames *frames,
 
       g_hash_table_remove (frames->frames, &frame->xwindow);
 
-      meta_style_info_unref (frame->style_info);
+      g_free (frame->theme_variant);
 
       gdk_window_destroy (frame->window);
 
@@ -747,7 +737,7 @@ meta_ui_frame_get_borders (MetaFrames       *frames,
    * window size
    */
   meta_theme_get_frame_borders (meta_theme_get_current (),
-                                frame->style_info,
+                                frame->theme_variant,
                                 type,
                                 frame->text_height,
                                 flags,
@@ -2286,7 +2276,7 @@ populate_cache (MetaFrames *frames,
     }
 
   meta_theme_get_frame_borders (meta_theme_get_current (),
-                                frame->style_info,
+                                frame->theme_variant,
                                 frame_type,
                                 frame->text_height,
                                 frame_flags,
@@ -2399,7 +2389,7 @@ subtract_client_area (cairo_region_t *region,
                  META_CORE_GET_CLIENT_HEIGHT, &area.height,
                  META_CORE_GET_END);
   meta_theme_get_frame_borders (meta_theme_get_current (),
-                                frame->style_info,
+                                frame->theme_variant,
                                 type, frame->text_height, flags,
                                 &borders);
 
@@ -2763,7 +2753,7 @@ meta_frames_paint (MetaFrames   *frames,
   meta_prefs_get_button_layout (&button_layout);
 
   meta_theme_draw_frame (meta_theme_get_current (),
-                         frame->style_info,
+                         frame->theme_variant,
                          cr,
                          type,
                          flags,
diff --git a/src/ui/frames.h b/src/ui/frames.h
index 1109a8c..8fb49eb 100644
--- a/src/ui/frames.h
+++ b/src/ui/frames.h
@@ -74,7 +74,7 @@ struct _MetaUIFrame
 {
   Window xwindow;
   GdkWindow *window;
-  MetaStyleInfo *style_info;
+  gchar *theme_variant;
   MetaFrameStyle *cache_style;
   PangoLayout *text_layout;
   int text_height;
diff --git a/src/ui/preview-widget.c b/src/ui/preview-widget.c
index 17ad228..be10ab0 100644
--- a/src/ui/preview-widget.c
+++ b/src/ui/preview-widget.c
@@ -38,8 +38,6 @@ static void     meta_preview_size_allocate (GtkWidget        *widget,
                                             GtkAllocation    *allocation);
 static gboolean meta_preview_draw          (GtkWidget        *widget,
                                             cairo_t          *cr);
-static void     meta_preview_realize       (GtkWidget        *widget);
-static void     meta_preview_dispose       (GObject          *object);
 static void     meta_preview_finalize      (GObject          *object);
 
 G_DEFINE_TYPE (MetaPreview, meta_preview, GTK_TYPE_BIN);
@@ -52,10 +50,8 @@ meta_preview_class_init (MetaPreviewClass *class)
 
   widget_class = (GtkWidgetClass*) class;
 
-  gobject_class->dispose = meta_preview_dispose;
   gobject_class->finalize = meta_preview_finalize;
 
-  widget_class->realize = meta_preview_realize;
   widget_class->draw = meta_preview_draw;
   widget_class->get_preferred_width = meta_preview_get_preferred_width;
   widget_class->get_preferred_height = meta_preview_get_preferred_height;
@@ -111,20 +107,6 @@ meta_preview_new (void)
 }
 
 static void
-meta_preview_dispose (GObject *object)
-{
-  MetaPreview *preview = META_PREVIEW (object);
-
-  if (preview->style_info)
-    {
-      meta_style_info_unref (preview->style_info);
-      preview->style_info = NULL;
-    }
-
-  G_OBJECT_CLASS (meta_preview_parent_class)->dispose (object);
-}
-
-static void
 meta_preview_finalize (GObject *object)
 {
   MetaPreview *preview;
@@ -186,7 +168,7 @@ ensure_info (MetaPreview *preview)
     {
       if (preview->theme)
         meta_theme_get_frame_borders (preview->theme,
-                                      preview->style_info,
+                                      NULL, /* theme variant */
                                       preview->type,
                                       preview->text_height,
                                       preview->flags,
@@ -238,7 +220,7 @@ meta_preview_draw (GtkWidget *widget,
       border_width = gtk_container_get_border_width (GTK_CONTAINER (widget));
 
       meta_theme_draw_frame (preview->theme,
-                             preview->style_info,
+                             NULL, /* theme variant... */
                              cr,
                              preview->type,
                              preview->flags,
@@ -257,17 +239,6 @@ meta_preview_draw (GtkWidget *widget,
   return GTK_WIDGET_CLASS (meta_preview_parent_class)->draw (widget, cr);
 }
 
-static void
-meta_preview_realize (GtkWidget *widget)
-{
-  MetaPreview *preview = META_PREVIEW (widget);
-  gboolean composited = meta_theme_get_composited (preview->theme);
-
-  GTK_WIDGET_CLASS (meta_preview_parent_class)->realize (widget);
-
-  preview->style_info = meta_style_info_new (NULL, composited);
-}
-
 #define NO_CHILD_WIDTH 80
 #define NO_CHILD_HEIGHT 20
 
diff --git a/src/ui/preview-widget.h b/src/ui/preview-widget.h
index 753707a..b59e231 100644
--- a/src/ui/preview-widget.h
+++ b/src/ui/preview-widget.h
@@ -39,8 +39,6 @@ struct _MetaPreview
 {
   GtkBin bin;
 
-  MetaStyleInfo *style_info;
-
   MetaTheme *theme;
   char *title;
   MetaFrameType type;
diff --git a/src/ui/theme-viewer.c b/src/ui/theme-viewer.c
index bf98405..f827f5c 100644
--- a/src/ui/theme-viewer.c
+++ b/src/ui/theme-viewer.c
@@ -1039,10 +1039,10 @@ run_theme_benchmark (void)
   widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_widget_realize (widget);
 
-  style_info = meta_style_info_new (NULL, meta_theme_get_composited (global_theme));
+  style_info = meta_theme_get_style_info (global_theme, NULL);
 
   meta_theme_get_frame_borders (global_theme,
-                                style_info,
+                                NULL,
                                 META_FRAME_TYPE_NORMAL,
                                 get_text_height (widget, style_info),
                                 get_flags (widget),
@@ -1086,7 +1086,7 @@ run_theme_benchmark (void)
       cr = cairo_create (pixmap);
 
       meta_theme_draw_frame (global_theme,
-                             style_info,
+                             NULL, /* theme variant */
                              cr,
                              META_FRAME_TYPE_NORMAL,
                              get_flags (widget),
diff --git a/src/ui/theme.c b/src/ui/theme.c
index 000bd4c..b17712b 100644
--- a/src/ui/theme.c
+++ b/src/ui/theme.c
@@ -1717,7 +1717,7 @@ meta_style_info_create_font_desc (MetaTheme     *theme,
 
 void
 meta_theme_draw_frame (MetaTheme              *theme,
-                       MetaStyleInfo          *style_info,
+                       const gchar            *theme_variant,
                        cairo_t                *cr,
                        MetaFrameType           type,
                        MetaFrameFlags          flags,
@@ -1732,6 +1732,7 @@ meta_theme_draw_frame (MetaTheme              *theme,
 {
   MetaFrameGeometry fgeom;
   MetaFrameStyle *style;
+  MetaStyleInfo *style_info;
 
   g_return_if_fail (type < META_FRAME_TYPE_LAST);
 
@@ -1741,6 +1742,8 @@ meta_theme_draw_frame (MetaTheme              *theme,
   if (style == NULL)
     return;
 
+  style_info = meta_theme_get_style_info (theme, theme_variant);
+
   meta_frame_layout_calc_geometry (style->layout,
                                    style_info,
                                    text_height,
@@ -1777,13 +1780,14 @@ meta_theme_draw_frame (MetaTheme              *theme,
 
 void
 meta_theme_get_frame_borders (MetaTheme        *theme,
-                              MetaStyleInfo    *style_info,
+                              const gchar      *theme_variant,
                               MetaFrameType     type,
                               int               text_height,
                               MetaFrameFlags    flags,
                               MetaFrameBorders *borders)
 {
   MetaFrameStyle *style;
+  MetaStyleInfo *style_info;
 
   g_return_if_fail (type < META_FRAME_TYPE_LAST);
 
@@ -1795,6 +1799,8 @@ meta_theme_get_frame_borders (MetaTheme        *theme,
   if (style == NULL)
     return;
 
+  style_info = meta_theme_get_style_info (theme, theme_variant);
+
   meta_frame_layout_sync_with_style (style->layout, style_info, flags, theme);
 
   meta_frame_layout_get_borders (theme, style->layout, text_height,
@@ -1803,7 +1809,7 @@ meta_theme_get_frame_borders (MetaTheme        *theme,
 
 void
 meta_theme_calc_geometry (MetaTheme              *theme,
-                          MetaStyleInfo          *style_info,
+                          const gchar            *theme_variant,
                           MetaFrameType           type,
                           int                     text_height,
                           MetaFrameFlags          flags,
@@ -1813,6 +1819,7 @@ meta_theme_calc_geometry (MetaTheme              *theme,
                           MetaFrameGeometry      *fgeom)
 {
   MetaFrameStyle *style;
+  MetaStyleInfo *style_info;
 
   g_return_if_fail (type < META_FRAME_TYPE_LAST);
 
@@ -1822,6 +1829,8 @@ meta_theme_calc_geometry (MetaTheme              *theme,
   if (style == NULL)
     return;
 
+  style_info = meta_theme_get_style_info (theme, theme_variant);
+
   meta_frame_layout_calc_geometry (style->layout,
                                    style_info,
                                    text_height,
diff --git a/src/ui/theme.h b/src/ui/theme.h
index 50f1927..2b30d63 100644
--- a/src/ui/theme.h
+++ b/src/ui/theme.h
@@ -116,7 +116,7 @@ double meta_theme_get_title_scale (MetaTheme     *theme,
                                    MetaFrameFlags flags);
 
 void meta_theme_draw_frame (MetaTheme              *theme,
-                            MetaStyleInfo          *style_info,
+                            const gchar            *variant,
                             cairo_t                *cr,
                             MetaFrameType           type,
                             MetaFrameFlags          flags,
@@ -130,13 +130,13 @@ void meta_theme_draw_frame (MetaTheme              *theme,
                             GdkPixbuf              *icon);
 
 void meta_theme_get_frame_borders (MetaTheme         *theme,
-                                   MetaStyleInfo     *style_info,
+                                   const gchar       *variant,
                                    MetaFrameType      type,
                                    int                text_height,
                                    MetaFrameFlags     flags,
                                    MetaFrameBorders  *borders);
 void meta_theme_calc_geometry (MetaTheme              *theme,
-                               MetaStyleInfo          *style_info,
+                               const gchar            *variant,
                                MetaFrameType           type,
                                int                     text_height,
                                MetaFrameFlags          flags,
diff --git a/src/ui/ui.c b/src/ui/ui.c
index 5d8f848..f89266a 100644
--- a/src/ui/ui.c
+++ b/src/ui/ui.c
@@ -674,11 +674,11 @@ meta_ui_theme_get_frame_borders (MetaUI           *ui,
     {
       GdkDisplay *display = gdk_x11_lookup_xdisplay (ui->xdisplay);
       GdkScreen *screen = gdk_display_get_screen (display, XScreenNumberOfScreen (ui->xscreen));
-      MetaStyleInfo *style_info = NULL;
+      MetaStyleInfo *style_info;
       MetaTheme *current;
 
       current = meta_theme_get_current ();
-      style_info = meta_style_info_new (NULL, meta_theme_get_composited (current));
+      style_info = meta_theme_get_style_info (current, NULL);
 
       context = gtk_widget_get_pango_context (GTK_WIDGET (ui->frames));
       font_desc = meta_prefs_get_titlebar_font ();
@@ -717,15 +717,12 @@ meta_ui_theme_get_frame_borders (MetaUI           *ui,
       text_height = meta_pango_font_desc_get_text_height (font_desc, context);
 
       meta_theme_get_frame_borders (current,
-                                    style_info,
+                                    NULL, /* FIXME: theme variant*/
                                     type, text_height, flags,
                                     borders);
 
       if (free_font_desc)
         pango_font_description_free (free_font_desc);
-
-      if (style_info != NULL)
-        meta_style_info_unref (style_info);
     }
   else
     {


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