mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-13 01:00:19 +00:00
Replace xtext's transparency with full window transparency
Xtext's transparency barely worked on windows, didn't work on any modern linux wm and used fake transparency. This uses gtk's built in window opacity that works on more systems and is real transparency. Text area only transparency may return with a transition to cairo, if it works on Windows.
This commit is contained in:
@@ -159,19 +159,11 @@ static const setting appearance_settings[] =
|
||||
{ST_HEADER, N_("Text Box"),0,0,0},
|
||||
{ST_TOGGLE, N_("Colored nick names"), P_OFFINTNL(hex_text_color_nicks), N_("Give each person on IRC a different color"),0,0},
|
||||
{ST_TOGGLR, N_("Indent nick names"), P_OFFINTNL(hex_text_indent), N_("Make nick names right-justified"),0,0},
|
||||
#if defined(USE_XLIB) || defined(WIN32)
|
||||
{ST_TOGGLE, N_("Transparent background"), P_OFFINTNL(hex_text_transparent),0,0,0},
|
||||
{ST_TOGGLR, N_("Show marker line"), P_OFFINTNL(hex_text_show_marker), N_("Insert a red line after the last read text."),0,0},
|
||||
{ST_EFILE, N_("Background image:"), P_OFFSETNL(hex_text_background), 0, 0, sizeof prefs.hex_text_background},
|
||||
{ST_TOGGLE, N_ ("Show marker line"), P_OFFINTNL (hex_text_show_marker), N_ ("Insert a red line after the last read text."), 0, 0},
|
||||
{ST_EFILE, N_ ("Background image:"), P_OFFSETNL (hex_text_background), 0, 0, sizeof prefs.hex_text_background},
|
||||
|
||||
{ST_HEADER, N_("Transparency Settings"), 0,0,0},
|
||||
{ST_HSCALE, N_("Red:"), P_OFFINTNL(hex_text_tint_red),0,0,0},
|
||||
{ST_HSCALE, N_("Green:"), P_OFFINTNL(hex_text_tint_green),0,0,0},
|
||||
{ST_HSCALE, N_("Blue:"), P_OFFINTNL(hex_text_tint_blue),0,0,0},
|
||||
#else
|
||||
{ST_TOGGLE, N_("Show marker line"), P_OFFINTNL(hex_text_show_marker), N_("Insert a red line after the last read text."),0,0},
|
||||
{ST_EFILE, N_("Background image:"), P_OFFSETNL(hex_text_background), 0, 0, sizeof prefs.hex_text_background},
|
||||
#endif
|
||||
{ST_HSCALE, N_("Window Opacity:"), P_OFFINTNL(hex_gui_transparency),0,0,0},
|
||||
|
||||
{ST_HEADER, N_("Time Stamps"),0,0,0},
|
||||
{ST_TOGGLE, N_("Enable time stamps"), P_OFFINTNL(hex_stamp_text),0,0,1},
|
||||
@@ -839,12 +831,13 @@ setup_create_spin (GtkWidget *table, int row, const setting *set)
|
||||
}
|
||||
|
||||
static gint
|
||||
setup_apply_tint (int *tag)
|
||||
setup_apply_trans (int *tag)
|
||||
{
|
||||
prefs.hex_text_tint_red = setup_prefs.hex_text_tint_red;
|
||||
prefs.hex_text_tint_green = setup_prefs.hex_text_tint_green;
|
||||
prefs.hex_text_tint_blue = setup_prefs.hex_text_tint_blue;
|
||||
mg_update_xtext (current_sess->gui->xtext);
|
||||
prefs.hex_gui_transparency = setup_prefs.hex_gui_transparency;
|
||||
gtk_window_set_opacity (GTK_WINDOW (current_sess->gui->window),
|
||||
(prefs.hex_gui_transparency / 255.));
|
||||
|
||||
/* mg_update_xtext (current_sess->gui->xtext); */
|
||||
*tag = 0;
|
||||
return 0;
|
||||
}
|
||||
@@ -858,7 +851,7 @@ setup_hscale_cb (GtkHScale *wid, const setting *set)
|
||||
|
||||
if (tag == 0)
|
||||
{
|
||||
tag = g_idle_add ((GSourceFunc) setup_apply_tint, &tag);
|
||||
tag = g_idle_add ((GSourceFunc) setup_apply_trans, &tag);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -879,6 +872,12 @@ setup_create_hscale (GtkWidget *table, int row, const setting *set)
|
||||
G_CALLBACK (setup_hscale_cb), (gpointer)set);
|
||||
gtk_table_attach (GTK_TABLE (table), wid, 3, 6, row, row + 1,
|
||||
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0);
|
||||
|
||||
#ifndef WIN32 /* Windows always supports this */
|
||||
/* Only used for transparency currently */
|
||||
if (!gtk_widget_is_composited (current_sess->gui->window))
|
||||
gtk_widget_set_sensitive (wid, FALSE);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user