[vte] app: Fix crash with -T and make it work
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vte] app: Fix crash with -T and make it work
- Date: Wed, 25 Nov 2015 19:41:54 +0000 (UTC)
commit 1cda4819a09cb37013c6dfc0bada026cc448afb0
Author: Christian Persch <chpe gnome org>
Date: Wed Nov 25 20:40:17 2015 +0100
app: Fix crash with -T and make it work
src/vteapp.c | 33 +++++++++++++++++++++++----------
1 files changed, 23 insertions(+), 10 deletions(-)
---
diff --git a/src/vteapp.c b/src/vteapp.c
index ff67f8a..43f87da 100644
--- a/src/vteapp.c
+++ b/src/vteapp.c
@@ -614,7 +614,8 @@ main(int argc, char **argv)
(char *) "FOO=BAR", (char *) "BOO=BIZ",
#endif
NULL};
- char *transparent = NULL;
+ int transparency_percent = 0;
+ gboolean no_argb_visual = FALSE;
char *encoding = NULL;
char *cjk_ambiguous_width = NULL;
gboolean audible = FALSE,
@@ -677,8 +678,8 @@ main(int argc, char **argv)
},
{
"transparent", 'T', 0,
- G_OPTION_ARG_STRING, &transparent,
- "Enable the use of a transparent background", "ALPHA"
+ G_OPTION_ARG_INT, &transparency_percent,
+ "Enable the use of a transparent background", "0..100",
},
{
"double-buffer", '2', G_OPTION_FLAG_REVERSE,
@@ -778,6 +779,12 @@ main(int argc, char **argv)
"Reverse foreground/background colors", NULL
},
{
+ "no-argb-visual", 0, 0,
+ G_OPTION_ARG_NONE, &no_argb_visual,
+ "Don't use an ARGB visual",
+ NULL
+ },
+ {
"no-geometry-hints", 'G', G_OPTION_FLAG_REVERSE,
G_OPTION_ARG_NONE, &use_geometry_hints,
"Allow the terminal to be resized to any dimension, not constrained to fit to an
integer multiple of characters",
@@ -895,10 +902,17 @@ main(int argc, char **argv)
}
/* Set ARGB visual */
- screen = gtk_widget_get_screen (window);
- visual = gdk_screen_get_rgba_visual(screen);
- if (visual)
- gtk_widget_set_visual(GTK_WIDGET(window), visual);
+ if (transparency_percent != 0) {
+ if (!no_argb_visual) {
+ screen = gtk_widget_get_screen (window);
+ visual = gdk_screen_get_rgba_visual(screen);
+ if (visual)
+ gtk_widget_set_visual(GTK_WIDGET(window), visual);
+ }
+
+ /* Without this transparency doesn't work; see bug #729884. */
+ gtk_widget_set_app_paintable(GTK_WIDGET(window), TRUE);
+ }
if (use_scrolled_window) {
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
@@ -988,9 +1002,8 @@ main(int argc, char **argv)
vte_terminal_set_scrollback_lines(terminal, lines);
vte_terminal_set_mouse_autohide(terminal, TRUE);
- if (transparent != NULL) {
- back.alpha = g_ascii_strtod (transparent, NULL);
- g_free (transparent);
+ if (transparency_percent != 0) {
+ back.alpha = (double)(100 - CLAMP(transparency_percent, 0, 100)) / 100.;
}
vte_terminal_set_colors(terminal, &fore, &back, NULL, 0);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]