[metacity] libmetacity: add meta_theme_get_buttons



commit 14b3453bc325f25a135810ff53d562f831271856
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Thu Aug 18 19:47:00 2016 +0300

    libmetacity: add meta_theme_get_buttons

 libmetacity/meta-theme.c |   58 ++++++++++++++++++++++++++++++++++++++++++++++
 libmetacity/meta-theme.h |    2 +
 2 files changed, 60 insertions(+), 0 deletions(-)
---
diff --git a/libmetacity/meta-theme.c b/libmetacity/meta-theme.c
index bd03f05..ccbd110 100644
--- a/libmetacity/meta-theme.c
+++ b/libmetacity/meta-theme.c
@@ -625,6 +625,64 @@ meta_theme_get_button (MetaTheme *theme,
   return NULL;
 }
 
+MetaButton **
+meta_theme_get_buttons (MetaTheme *theme)
+{
+  MetaButtonLayout *layout;
+  gint size;
+  MetaButton **retval;
+  gint index;
+  gint side;
+
+  layout = theme->button_layout;
+  size = layout->n_left_buttons + layout->n_right_buttons + 1;
+  retval = g_new0 (MetaButton *, size);
+  index = 0;
+
+  for (side = 0; side < 2; side++)
+    {
+      MetaButton *buttons;
+      gint n_buttons;
+      gint i;
+
+      if (side == 0)
+        {
+          buttons = layout->left_buttons;
+          n_buttons = layout->n_left_buttons;
+        }
+      else if (side == 1)
+        {
+          buttons = layout->right_buttons;
+          n_buttons = layout->n_right_buttons;
+        }
+      else
+        {
+          g_assert_not_reached ();
+        }
+
+      for (i = 0; i < n_buttons; i++)
+        {
+          MetaButton *btn;
+          GdkRectangle rect;
+
+          btn = &buttons[i];
+          rect = btn->rect.visible;
+
+          if (!btn->visible || btn->type == META_BUTTON_TYPE_SPACER ||
+              rect.width <= 0 || rect.height <= 0)
+            {
+              continue;
+            }
+
+          retval[index++] = btn;
+        }
+    }
+
+  retval[index] = NULL;
+
+  return retval;
+}
+
 void
 meta_theme_set_composited (MetaTheme *theme,
                            gboolean   composited)
diff --git a/libmetacity/meta-theme.h b/libmetacity/meta-theme.h
index f3228d4..6cc136a 100644
--- a/libmetacity/meta-theme.h
+++ b/libmetacity/meta-theme.h
@@ -117,6 +117,8 @@ MetaButton    *meta_theme_get_button        (MetaTheme                   *theme,
                                              gint                         x,
                                              gint                         y);
 
+MetaButton   **meta_theme_get_buttons       (MetaTheme                   *theme);
+
 void           meta_theme_set_composited    (MetaTheme                   *theme,
                                              gboolean                     composited);
 


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