[gnome-flashback] common: fix GfPopupWindow style



commit 0172949aa66fb74821f98da4316764ea1aa1442b
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Tue Jan 19 14:14:41 2016 +0200

    common: fix GfPopupWindow style
    
    - popup window style fixed for both GTK+ builtin themes.
    - better support when using gnome-flashback without compositing
      manager.

 data/theme/Adwaita/gnome-flashback-dark.css      |   11 ++++++
 data/theme/Adwaita/gnome-flashback.css           |   11 ++++++
 data/theme/HighContrast/gnome-flashback-dark.css |    2 +-
 data/theme/HighContrast/gnome-flashback.css      |   11 ++++++
 gnome-flashback/Adwaita.css                      |    6 ---
 gnome-flashback/HighContrast.css                 |    6 ---
 gnome-flashback/libcommon/gf-popup-window.c      |   43 +++++++++++++++++++++-
 7 files changed, 75 insertions(+), 15 deletions(-)
---
diff --git a/data/theme/Adwaita/gnome-flashback-dark.css b/data/theme/Adwaita/gnome-flashback-dark.css
index 6011e28..b2b3762 100644
--- a/data/theme/Adwaita/gnome-flashback-dark.css
+++ b/data/theme/Adwaita/gnome-flashback-dark.css
@@ -1 +1,12 @@
 @import url("resource:///org/gnome/gnome-flashback/Adwaita.css");
+
+gf-popup-window {
+  background-color: #393f3f;
+  border: 1px solid rgba(28, 31, 31, 0.9);
+  border-radius: 10px;
+}
+
+gf-popup-window.solid {
+  border: 1px solid #1f2222;
+  border-radius: 0px;
+}
diff --git a/data/theme/Adwaita/gnome-flashback.css b/data/theme/Adwaita/gnome-flashback.css
index 6011e28..aca1775 100644
--- a/data/theme/Adwaita/gnome-flashback.css
+++ b/data/theme/Adwaita/gnome-flashback.css
@@ -1 +1,12 @@
 @import url("resource:///org/gnome/gnome-flashback/Adwaita.css");
+
+gf-popup-window {
+  background-color: #e8e8e7;
+  border: 1px solid rgba(0, 0, 0, 0.23);
+  border-radius: 10px;
+}
+
+gf-popup-window.solid {
+  border: 1px solid #a5a5a1;
+  border-radius: 0px;
+}
diff --git a/data/theme/HighContrast/gnome-flashback-dark.css 
b/data/theme/HighContrast/gnome-flashback-dark.css
index 9cb298a..5e442a3 100644
--- a/data/theme/HighContrast/gnome-flashback-dark.css
+++ b/data/theme/HighContrast/gnome-flashback-dark.css
@@ -1,2 +1,2 @@
 /* HightContrast theme does not have dark variant. */
- import url("resource:///org/gnome/gnome-flashback/theme/HighContrast/gnome-panel.css");
+ import url("resource:///org/gnome/gnome-flashback/theme/HighContrast/gnome-flashback.css");
diff --git a/data/theme/HighContrast/gnome-flashback.css b/data/theme/HighContrast/gnome-flashback.css
index a63d3e8..82f41bd 100644
--- a/data/theme/HighContrast/gnome-flashback.css
+++ b/data/theme/HighContrast/gnome-flashback.css
@@ -1 +1,12 @@
 @import url("resource:///org/gnome/gnome-flashback/HighContrast.css");
+
+gf-popup-window {
+  background-color: #ffffff;
+  border: 1px solid rgba(0, 0, 0, 0.23);
+  border-radius: 10px;
+}
+
+gf-popup-window.solid {
+  border: 1px solid #8d8d8d;
+  border-radius: 0px;
+}
diff --git a/gnome-flashback/Adwaita.css b/gnome-flashback/Adwaita.css
index 794e263..2b4b807 100644
--- a/gnome-flashback/Adwaita.css
+++ b/gnome-flashback/Adwaita.css
@@ -1,9 +1,3 @@
-GfPopupWindow
-{
-  border-radius: 20px;
-  border: 1px solid rgba(0, 0, 0, 0.23);
-}
-
 GfInputSourcePopup #input-source
 {
    font-size: 22px;
diff --git a/gnome-flashback/HighContrast.css b/gnome-flashback/HighContrast.css
index 794e263..2b4b807 100644
--- a/gnome-flashback/HighContrast.css
+++ b/gnome-flashback/HighContrast.css
@@ -1,9 +1,3 @@
-GfPopupWindow
-{
-  border-radius: 20px;
-  border: 1px solid rgba(0, 0, 0, 0.23);
-}
-
 GfInputSourcePopup #input-source
 {
    font-size: 22px;
diff --git a/gnome-flashback/libcommon/gf-popup-window.c b/gnome-flashback/libcommon/gf-popup-window.c
index 14384ac..624d4d8 100644
--- a/gnome-flashback/libcommon/gf-popup-window.c
+++ b/gnome-flashback/libcommon/gf-popup-window.c
@@ -21,7 +21,8 @@
 typedef struct _GfPopupWindowPrivate GfPopupWindowPrivate;
 struct _GfPopupWindowPrivate
 {
-  guint fade_id;
+  gboolean composited;
+  guint    fade_id;
 };
 
 enum
@@ -49,7 +50,7 @@ fade_out_cb (gpointer user_data)
   opacity = gtk_widget_get_opacity (widget);
 
   opacity -= 0.04;
-  if (opacity < 0.00)
+  if (!priv->composited || opacity < 0.00)
     {
       gtk_widget_set_opacity (widget, 1.0);
 
@@ -128,6 +129,27 @@ get_background_surface (GtkWidget *widget,
   return surface;
 }
 
+static void
+gf_popup_window_composited_changed (GtkWidget *widget)
+{
+  GfPopupWindow *window;
+  GfPopupWindowPrivate *priv;
+  GdkScreen *screen;
+  GtkStyleContext *context;
+
+  window = GF_POPUP_WINDOW (widget);
+  priv = gf_popup_window_get_instance_private (window);
+
+  screen = gtk_widget_get_screen (widget);
+  context = gtk_widget_get_style_context (widget);
+  priv->composited = gdk_screen_is_composited (screen);
+
+  if (priv->composited)
+    gtk_style_context_remove_class (context, "solid");
+  else
+    gtk_style_context_add_class (context, "solid");
+}
+
 static gboolean
 gf_popup_window_draw (GtkWidget *widget,
                       cairo_t   *cr)
@@ -158,12 +180,26 @@ gf_popup_window_draw (GtkWidget *widget,
 static void
 gf_popup_window_realize (GtkWidget *widget)
 {
+  GfPopupWindow *window;
+  GfPopupWindowPrivate *priv;
   GdkScreen *screen;
+  GtkStyleContext *context;
   GdkVisual *visual;
 
+  window = GF_POPUP_WINDOW (widget);
+  priv = gf_popup_window_get_instance_private (window);
+
   screen = gtk_widget_get_screen (widget);
+  context = gtk_widget_get_style_context (widget);
+
+  priv->composited = gdk_screen_is_composited (screen);
   visual = gdk_screen_get_rgba_visual (screen);
 
+  if (priv->composited)
+    gtk_style_context_remove_class (context, "solid");
+  else
+    gtk_style_context_add_class (context, "solid");
+
   if (visual == NULL)
     visual = gdk_screen_get_system_visual (screen);
 
@@ -183,12 +219,15 @@ gf_popup_window_class_init (GfPopupWindowClass *window_class)
 
   object_class->finalize = gf_popup_window_finalize;
 
+  widget_class->composited_changed = gf_popup_window_composited_changed;
   widget_class->draw = gf_popup_window_draw;
   widget_class->realize = gf_popup_window_realize;
 
   signals[SIGNAL_FADE_FINISHED] =
     g_signal_new ("fade-finished", G_OBJECT_CLASS_TYPE (window_class),
                   G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+
+  gtk_widget_class_set_css_name (widget_class, "gf-popup-window");
 }
 
 static void


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