[metacity] tabpopup.c: improve * Fix missing white border on outline window. * Do not create outline_window if
- From: Alberts Muktupāvels <muktupavels src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [metacity] tabpopup.c: improve * Fix missing white border on outline window. * Do not create outline_window if
- Date: Sun, 8 Jun 2014 18:42:45 +0000 (UTC)
commit a7dd07274af1ea7a5e2606881e55c480c38e395a
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date: Sun Jun 8 21:34:48 2014 +0300
tabpopup.c: improve
* Fix missing white border on outline window.
* Do not create outline_window if we are not going to use it.
src/ui/tabpopup.c | 72 ++++++++++++++++++++++------------------------------
1 files changed, 31 insertions(+), 41 deletions(-)
---
diff --git a/src/ui/tabpopup.c b/src/ui/tabpopup.c
index 8035be2..f9fcafd 100644
--- a/src/ui/tabpopup.c
+++ b/src/ui/tabpopup.c
@@ -229,19 +229,32 @@ meta_ui_tab_popup_new (const MetaTabEntry *entries,
popup = g_new (MetaTabPopup, 1);
- popup->outline_window = gtk_window_new (GTK_WINDOW_POPUP);
-
screen = gdk_display_get_screen (gdk_display_get_default (),
screen_number);
- gtk_window_set_screen (GTK_WINDOW (popup->outline_window),
- screen);
- gtk_widget_set_app_paintable (popup->outline_window, TRUE);
- gtk_widget_realize (popup->outline_window);
+ if (outline)
+ {
+ GdkRGBA black = { 0.0, 0.0, 0.0, 1.0 };
+
+ popup->outline_window = gtk_window_new (GTK_WINDOW_POPUP);
+
+ gtk_window_set_screen (GTK_WINDOW (popup->outline_window),
+ screen);
+
+ gtk_widget_set_app_paintable (popup->outline_window, TRUE);
+ gtk_widget_realize (popup->outline_window);
+
+ gdk_window_set_background_rgba (gtk_widget_get_window (popup->outline_window),
+ &black);
+
+ g_signal_connect (G_OBJECT (popup->outline_window), "draw",
+ G_CALLBACK (outline_window_draw), popup);
+
+ gtk_widget_show (popup->outline_window);
+ }
+ else
+ popup->outline_window = NULL;
- g_signal_connect (G_OBJECT (popup->outline_window), "draw",
- G_CALLBACK (outline_window_draw), popup);
-
popup->window = gtk_window_new (GTK_WINDOW_POPUP);
gtk_window_set_screen (GTK_WINDOW (popup->window),
@@ -407,8 +420,9 @@ void
meta_ui_tab_popup_free (MetaTabPopup *popup)
{
meta_verbose ("Destroying tab popup window\n");
-
- gtk_widget_destroy (popup->outline_window);
+
+ if (popup->outline_window != NULL)
+ gtk_widget_destroy (popup->outline_window);
gtk_widget_destroy (popup->window);
g_list_foreach (popup->entries, free_tab_entry, NULL);
@@ -441,10 +455,6 @@ static void
display_entry (MetaTabPopup *popup,
TabEntry *te)
{
- GdkRectangle rect;
- GdkWindow *window;
-
-
if (popup->current_selected_entry)
{
if (popup->outline)
@@ -462,44 +472,24 @@ display_entry (MetaTabPopup *popup,
if (popup->outline)
{
+ GdkRectangle rect;
cairo_region_t *region;
- cairo_region_t *inner_region;
- GdkRGBA black = { 0.0, 0.0, 0.0, 1.0 };
- window = gtk_widget_get_window (popup->outline_window);
-
- /* Do stuff behind gtk's back */
- gdk_window_hide (window);
- meta_core_increment_event_serial (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
-
rect = te->rect;
rect.x = 0;
rect.y = 0;
- gdk_window_move_resize (window,
- te->rect.x, te->rect.y,
- te->rect.width, te->rect.height);
-
- gdk_window_set_background_rgba (window, &black);
+ gtk_window_move (GTK_WINDOW (popup->outline_window), te->rect.x, te->rect.y);
+ gtk_window_resize (GTK_WINDOW (popup->outline_window), te->rect.width, te->rect.height);
region = cairo_region_create_rectangle (&rect);
- inner_region = cairo_region_create_rectangle (&te->inner_rect);
- cairo_region_subtract (region, inner_region);
- cairo_region_destroy (inner_region);
-
- gdk_window_shape_combine_region (window,
+ cairo_region_subtract_rectangle (region, &te->inner_rect);
+
+ gdk_window_shape_combine_region (gtk_widget_get_window (popup->outline_window),
region,
0, 0);
cairo_region_destroy (region);
-
- /* This should piss off gtk a bit, but we don't want to raise
- * above the tab popup. So, instead of calling gtk_widget_show,
- * we manually set the window as mapped and then manually map it
- * with gdk functions.
- */
- gtk_widget_set_mapped (popup->outline_window, TRUE);
- gdk_window_show_unraised (window);
}
/* Must be before we handle an expose for the outline window */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]