pidgin/plugins/transparency/transparency.c

Tue, 11 Apr 2023 00:17:15 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 11 Apr 2023 00:17:15 -0500
changeset 42202
2273647d24b0
parent 42188
04c0398f1046
child 42453
1c13bc243b7d
permissions
-rw-r--r--

Use gtk_widget_set_visible for everything

gtk_widget_show and gtk_widget_hide are deprecated in GTK 4.10. However,
gtk_widget_set_visible has been around forever so we just need to move to that.

I didn't test all of these and there are probably some that can still be
removed, but most of those are in code that is going to get refreshed in the
future so I didn't bother for now.

Testing Done:
I tested the join chat, add chat, and add buddy dialogs, as well as the contact added notification.

Reviewed at https://reviews.imfreedom.org/r/2430/

38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
1 /*
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
2 * Pidgin - Transparency plugin
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
3 *
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
4 * Copyright (C) 1998-2002, Rob Flynn <rob@marko.net>
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
5 * Copyright (C) 2002-2003, Herman Bloggs <hermanator12002@yahoo.com>
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
6 * Copyright (C) 2005, Daniel Atallah <daniel_atallah@yahoo.com>
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
7 *
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
9 * modify it under the terms of the GNU General Public License as
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
10 * published by the Free Software Foundation; either version 2 of the
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
11 * License, or (at your option) any later version.
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
12 *
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful, but
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
14 * WITHOUT ANY WARRANTY; without even the implied warranty of
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
16 * General Public License for more details.
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
17 *
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
21 * 02111-1301, USA.
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
22 *
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
23 */
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
24
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
25 #include <glib.h>
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
26 #include <glib/gi18n-lib.h>
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
27
40360
e21f3bbcc2a5 Update all of the pidgin code to include purple.h
Gary Kramlich <grim@reaperworld.com>
parents: 39173
diff changeset
28 #include <purple.h>
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
29
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
30 #include <gplugin.h>
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
31 #include <gplugin-native.h>
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
32
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
33 #include <pidgin.h>
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
34
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
35 /*
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
36 * MACROS & DEFINES
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
37 */
38777
b9031c159dd3 Add comment about the plugin name being unchanged
Daniel Kamil Kozar <dkk089@gmail.com>
parents: 38776
diff changeset
38 /* The plugin name is left unchanged from its WinAPI days in order to keep it
b9031c159dd3 Add comment about the plugin name being unchanged
Daniel Kamil Kozar <dkk089@gmail.com>
parents: 38776
diff changeset
39 * loading for users who were using it. */
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
40 #define WINTRANS_PLUGIN_ID "gtk-win-trans"
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
41
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
42 /* Key used to save GtkEventControllerFocus for this plugin. */
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
43 #define WINTRANS_CONTROLLER_KEY (WINTRANS_PLUGIN_ID "-focus-controller")
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
44
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
45 /* Key used to save GtkSlider for this plugin. */
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
46 #define WINTRANS_SLIDER_KEY (WINTRANS_PLUGIN_ID "-slider")
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
47
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
48 /*
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
49 * LOCALS
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
50 */
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
51 #define OPT_SCHEMA "im.pidgin.Pidgin.plugin.Transparency"
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
52 #define OPT_WINTRANS_ALPHA "alpha"
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
53 #define OPT_WINTRANS_SLIDER "slider"
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
54 #define OPT_WINTRANS_ONFOCUS "solid-on-focus"
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
55
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
56 /*
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
57 * CODE
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
58 */
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
59
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
60 /* Set window transparency level */
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
61 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
62 set_wintrans(GtkWidget *window, int alpha, gboolean enabled)
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
63 {
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
64 if (enabled) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
65 gtk_widget_set_opacity(window, alpha / 255.0);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
66 } else {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
67 gtk_widget_set_opacity(window, 1);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
68 }
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
69
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
70 /* Changing from opaque to partially transparent seems to need some kind of
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
71 * structural refresh. Unfortunately, a simple `gtk_widget_queue_draw` is
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
72 * not sufficient, so we need to do this instead. */
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
73 gtk_widget_queue_resize(window);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
74 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
75
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
76 /* When a conv window is focused, if we're only transparent when unfocused,
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
77 * deal with transparency */
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
78 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
79 focus_conv_win_cb(GtkEventControllerFocus *self, gpointer data) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
80 GtkWidget *window = NULL;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
81 gboolean enter = GPOINTER_TO_INT(data);
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
82 GSettings *settings = NULL;
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
83
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
84 settings = g_settings_new_with_backend(OPT_SCHEMA,
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
85 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
86
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
87 if(!g_settings_get_boolean(settings, OPT_WINTRANS_ONFOCUS)) {
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
88 g_object_unref(settings);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
89 return;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
90 }
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
91
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
92 window = gtk_event_controller_get_widget(GTK_EVENT_CONTROLLER(self));
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
93 set_wintrans(window, g_settings_get_int(settings, OPT_WINTRANS_ALPHA),
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
94 !enter);
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
95
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
96 g_object_unref(settings);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
97 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
98
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
99 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
100 add_focus_controller_to_conv_win(GtkWidget *window) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
101 GtkEventController *focus = NULL;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
102
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
103 focus = gtk_event_controller_focus_new();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
104 g_signal_connect(focus, "enter", G_CALLBACK(focus_conv_win_cb),
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
105 GINT_TO_POINTER(TRUE));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
106 g_signal_connect(focus, "leave", G_CALLBACK(focus_conv_win_cb),
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
107 GINT_TO_POINTER(FALSE));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
108
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
109 gtk_widget_add_controller(window, focus);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
110 g_object_set_data(G_OBJECT(window), WINTRANS_CONTROLLER_KEY, focus);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
111 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
112
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
113 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
114 remove_focus_controller_from_conv_win(GtkWidget *window) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
115 GtkEventController *focus = NULL;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
116
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
117 focus = g_object_get_data(G_OBJECT(window), WINTRANS_CONTROLLER_KEY);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
118 if(GTK_IS_EVENT_CONTROLLER_FOCUS(focus)) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
119 gtk_widget_remove_controller(window, focus);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
120 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
121 g_object_set_data(G_OBJECT(window), WINTRANS_CONTROLLER_KEY, NULL);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
122 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
123
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
124 static void change_alpha(GtkWidget *w, gpointer data) {
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
125 int alpha = gtk_range_get_value(GTK_RANGE(w));
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
126 GSettings *settings = NULL;
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
127
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
128 settings = g_settings_new_with_backend(OPT_SCHEMA,
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
129 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
130
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
131 g_settings_set_int(settings, OPT_WINTRANS_ALPHA, alpha);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
132
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
133 /* If we're in no-transparency on focus mode,
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
134 * don't take effect immediately */
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
135 if(!g_settings_get_boolean(settings, OPT_WINTRANS_ONFOCUS)) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
136 set_wintrans(GTK_WIDGET(data), alpha, TRUE);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
137 }
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
138
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
139 g_object_unref(settings);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
140 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
141
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
142 /* Clean up transparency stuff for the conv window */
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
143 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
144 conversation_delete_cb(G_GNUC_UNUSED GtkApplication *application,
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
145 GtkWindow *window, G_GNUC_UNUSED gpointer data)
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
146 {
41696
35f8ce475b21 Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents: 41665
diff changeset
147 if(!PIDGIN_IS_DISPLAY_WINDOW(window)) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
148 return;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
149 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
150
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
151 purple_debug_info(WINTRANS_PLUGIN_ID,
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
152 "Conv window destroyed... removing from list");
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
153
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
154 g_object_set_data(G_OBJECT(window), WINTRANS_SLIDER_KEY, NULL);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
155
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
156 /* Remove the focus cbs */
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
157 remove_focus_controller_from_conv_win(GTK_WIDGET(window));
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
158 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
159
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
160 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
161 remove_slider(GtkWidget *slider_frame) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
162 gtk_widget_unparent(slider_frame);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
163 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
164
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
165 static void
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
166 update_slider(GSettings *settings, gchar *key, gpointer data)
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
167 {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
168 GtkWidget *slider = data;
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
169 gint alpha = 255;
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
170
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
171 alpha = g_settings_get_int(settings, key);
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
172 gtk_range_set_value(GTK_RANGE(slider), alpha);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
173 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
174
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
175 static void add_slider(GtkWidget *win) {
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
176 GtkWidget *vbox = NULL;
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
177 GtkWidget *slider_frame;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
178 GtkWidget *hbox;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
179 GtkWidget *label, *slider;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
180 gint imalpha = 255;
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
181 GSettings *settings = NULL;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
182
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
183 /* Look up this window to see if it already has a slider */
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
184 if (g_object_get_data(G_OBJECT(win), WINTRANS_SLIDER_KEY) != NULL) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
185 return;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
186 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
187
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
188 vbox = gtk_widget_get_first_child(win);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
189 while(vbox != NULL && !GTK_IS_BOX(vbox)) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
190 vbox = gtk_widget_get_next_sibling(vbox);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
191 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
192
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
193 if(vbox == NULL) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
194 purple_debug_error(WINTRANS_PLUGIN_ID, "no vbox found");
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
195 return;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
196 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
197
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
198 settings = g_settings_new_with_backend(OPT_SCHEMA,
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
199 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
200
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
201 slider_frame = gtk_frame_new(NULL);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
202 gtk_widget_set_margin_start(slider_frame, 6);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
203 gtk_widget_set_margin_end(slider_frame, 6);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
204 gtk_box_prepend(GTK_BOX(vbox), slider_frame);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
205
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
206 g_settings_bind(settings, OPT_WINTRANS_SLIDER, slider_frame, "visible",
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
207 G_SETTINGS_BIND_DEFAULT);
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
208
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
209 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
210 gtk_frame_set_child(GTK_FRAME(slider_frame), hbox);
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
211
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
212 label = gtk_label_new(_("Opacity:"));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
213 gtk_box_append(GTK_BOX(hbox), label);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
214
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
215 slider = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 50, 255, 1);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
216 gtk_widget_set_hexpand(slider, TRUE);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
217 gtk_box_append(GTK_BOX(hbox), slider);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
218
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
219 imalpha = g_settings_get_int(settings, OPT_WINTRANS_ALPHA);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
220 gtk_range_set_value(GTK_RANGE(slider), imalpha);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
221 /* On slider val change, update window's transparency level */
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
222 g_signal_connect(G_OBJECT(slider), "value-changed",
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
223 G_CALLBACK(change_alpha), win);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
224
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
225 /* We cannot use g_settings_bind because GtkScale has no value property. */
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
226 g_signal_connect_object(settings, "changed::" OPT_WINTRANS_ALPHA,
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
227 G_CALLBACK(update_slider), slider, 0);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
228
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
229 /* Set the initial transparency level */
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
230 set_wintrans(win, g_settings_get_int(settings, OPT_WINTRANS_ALPHA),
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
231 TRUE);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
232
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
233 /* Set window data, to track that it has a slider */
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
234 g_object_set_data_full(G_OBJECT(win), WINTRANS_SLIDER_KEY, slider_frame,
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
235 (GDestroyNotify)remove_slider);
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
236
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
237 g_object_unref(settings);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
238 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
239
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
240 /* Remove all transparency related aspects from conversation windows */
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
241 static void remove_convs_wintrans(gboolean remove_signal) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
242 GApplication *application = NULL;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
243 GList *wins;
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
244
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
245 application = g_application_get_default();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
246 wins = gtk_application_get_windows(GTK_APPLICATION(application));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
247
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
248 for(; wins; wins = wins->next) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
249 GtkWidget *window = wins->data;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
250
41696
35f8ce475b21 Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents: 41665
diff changeset
251 if(!PIDGIN_IS_DISPLAY_WINDOW(window)) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
252 continue;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
253 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
254
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
255 set_wintrans(window, 0, FALSE);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
256
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
257 /* Remove the focus cbs */
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
258 if (remove_signal) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
259 remove_focus_controller_from_conv_win(window);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
260 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
261
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
262 g_object_set_data(G_OBJECT(window), WINTRANS_SLIDER_KEY, NULL);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
263 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
264 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
265
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
266 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
267 set_conv_window_trans(GtkWidget *window) {
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
268 GSettings *settings = NULL;
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
269
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
270 settings = g_settings_new_with_backend(OPT_SCHEMA,
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
271 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
272
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
273 set_wintrans(window, g_settings_get_int(settings, OPT_WINTRANS_ALPHA),
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
274 TRUE);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
275
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
276 add_slider(window);
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
277
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
278 g_object_unref(settings);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
279 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
280
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
281 static void
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
282 new_conversation_cb(G_GNUC_UNUSED GtkApplication *application,
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
283 GtkWindow *window, G_GNUC_UNUSED gpointer data)
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
284 {
41696
35f8ce475b21 Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents: 41665
diff changeset
285 if(!PIDGIN_IS_DISPLAY_WINDOW(window)) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
286 return;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
287 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
288
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
289 set_conv_window_trans(GTK_WIDGET(window));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
290 add_focus_controller_to_conv_win(GTK_WIDGET(window));
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
291 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
292
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
293 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
294 update_existing_convs(void) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
295 GApplication *application = NULL;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
296 GList *wins;
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
297
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
298 application = g_application_get_default();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
299 wins = gtk_application_get_windows(GTK_APPLICATION(application));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
300
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
301 for(; wins; wins = wins->next) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
302 GtkWidget *window = wins->data;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
303
41696
35f8ce475b21 Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents: 41665
diff changeset
304 if(!PIDGIN_IS_DISPLAY_WINDOW(window)) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
305 continue;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
306 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
307
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
308 set_conv_window_trans(window);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
309
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
310 add_focus_controller_to_conv_win(window);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
311 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
312 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
313
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
314 static GPluginPluginInfo *
42074
58ae70ad7f21 Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
315 transparency_query(G_GNUC_UNUSED GError **error) {
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
316 const gchar * const authors[] = {
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
317 "Pidgin Developers <devel@pidgin.im>",
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
318 NULL
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
319 };
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
320
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
321 return pidgin_plugin_info_new(
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
322 "id", WINTRANS_PLUGIN_ID,
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
323 "name", N_("Transparency"),
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
324 "version", DISPLAY_VERSION,
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
325 "category", N_("User interface"),
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
326 "summary", N_("Variable Transparency for the buddy list and conversations."),
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
327 "description", N_("This plugin enables variable alpha transparency on conversation windows and the buddy list."),
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
328 "authors", authors,
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
329 "website", PURPLE_WEBSITE,
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
330 "abi-version", PURPLE_ABI_VERSION,
42188
04c0398f1046 Fix transparency plugin for display list/pref changes
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42074
diff changeset
331 "settings-schema", OPT_SCHEMA,
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
332 NULL
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
333 );
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
334 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
335
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
336 static gboolean
42074
58ae70ad7f21 Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
337 transparency_load(G_GNUC_UNUSED GPluginPlugin *plugin,
58ae70ad7f21 Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
338 G_GNUC_UNUSED GError **error)
58ae70ad7f21 Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
339 {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
340 GApplication *application = NULL;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
341
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
342 application = g_application_get_default();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
343 g_signal_connect(application, "window-added",
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
344 G_CALLBACK(new_conversation_cb), NULL);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
345 g_signal_connect(application, "window-removed",
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
346 G_CALLBACK(conversation_delete_cb), NULL);
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
347
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
348 update_existing_convs();
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
349
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
350 return TRUE;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
351 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
352
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
353 static gboolean
42074
58ae70ad7f21 Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
354 transparency_unload(G_GNUC_UNUSED GPluginPlugin *plugin,
58ae70ad7f21 Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
355 G_GNUC_UNUSED gboolean shutdown,
58ae70ad7f21 Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
356 G_GNUC_UNUSED GError **error)
58ae70ad7f21 Mark unused parameters as such for all of the pidgin plugins
Gary Kramlich <grim@reaperworld.com>
parents: 42061
diff changeset
357 {
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
358 purple_debug_info(WINTRANS_PLUGIN_ID, "Unloading transparency plugin\n");
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
359
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
360 remove_convs_wintrans(TRUE);
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
361
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
362 return TRUE;
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
363 }
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
364
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
365 GPLUGIN_NATIVE_PLUGIN_DECLARE(transparency)
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
366

mercurial