summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Givens <[email protected]>2023-05-31 13:52:54 -0600
committerLuke from DC <[email protected]>2023-06-01 18:50:17 +0000
commit100709a1706e2481342f6fa5ab2688212ab2e8de (patch)
tree9fce8805b5cd84bd640c6f4d1ccf85ac401b06a7
parent8896efde4a927e6e2f8f7ab5ae612769aa04337d (diff)
downloadmate-terminal-100709a1706e2481342f6fa5ab2688212ab2e8de.tar.bz2
mate-terminal-100709a1706e2481342f6fa5ab2688212ab2e8de.tar.xz
terminal-screen: set widget app-paintable when transparent bg is enabled
-rw-r--r--src/terminal-screen.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/terminal-screen.c b/src/terminal-screen.c
index 9341dd5..c5a5b1f 100644
--- a/src/terminal-screen.c
+++ b/src/terminal-screen.c
@@ -125,6 +125,8 @@ static void terminal_screen_change_font (TerminalScreen *screen);
static gboolean terminal_screen_popup_menu (GtkWidget *widget);
static gboolean terminal_screen_button_press (GtkWidget *widget,
GdkEventButton *event);
+static void terminal_screen_hierarchy_changed (GtkWidget *widget,
+ GtkWidget *previous_toplevel);
static void terminal_screen_launch_child_on_idle (TerminalScreen *screen);
static void terminal_screen_child_exited (VteTerminal *terminal, int status);
@@ -484,6 +486,7 @@ terminal_screen_class_init (TerminalScreenClass *klass)
widget_class->style_updated = terminal_screen_style_updated;
widget_class->drag_data_received = terminal_screen_drag_data_received;
widget_class->button_press_event = terminal_screen_button_press;
+ widget_class->hierarchy_changed = terminal_screen_hierarchy_changed;
widget_class->popup_menu = terminal_screen_popup_menu;
terminal_class->child_exited = terminal_screen_child_exited;
@@ -1075,6 +1078,26 @@ terminal_screen_profile_notify_cb (TerminalProfile *profile,
}
static void
+update_toplevel_transparency (TerminalScreen *screen)
+{
+ GtkWidget *widget = GTK_WIDGET (screen);
+ TerminalScreenPrivate *priv = screen->priv;
+ GSettings *profile = priv->profile;
+ TerminalBackgroundType bg_type = terminal_profile_get_property_enum (profile, TERMINAL_PROFILE_BACKGROUND_TYPE);
+
+ if (bg_type == TERMINAL_BACKGROUND_TRANSPARENT)
+ {
+ GtkWidget *toplevel;
+ toplevel = gtk_widget_get_toplevel (widget);
+ if (toplevel != NULL && gtk_widget_is_toplevel (toplevel)
+ && !gtk_widget_get_app_paintable (toplevel))
+ {
+ gtk_widget_set_app_paintable (toplevel, TRUE);
+ }
+ }
+}
+
+static void
update_color_scheme (TerminalScreen *screen)
{
TerminalScreenPrivate *priv = screen->priv;
@@ -1159,6 +1182,8 @@ update_color_scheme (TerminalScreen *screen)
if (bold_rgba)
vte_terminal_set_color_bold (VTE_TERMINAL (screen),
bold_rgba);
+
+ update_toplevel_transparency (screen);
}
void
@@ -1742,6 +1767,13 @@ terminal_screen_button_press (GtkWidget *widget,
}
static void
+terminal_screen_hierarchy_changed (GtkWidget *widget,
+ GtkWidget *previous_toplevel)
+{
+ update_toplevel_transparency (TERMINAL_SCREEN (widget));
+}
+
+static void
terminal_screen_set_dynamic_title (TerminalScreen *screen,
const char *title,
gboolean userset)