pidgin/plugins/transparency/transparency.c

Wed, 26 Oct 2022 02:58:05 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Wed, 26 Oct 2022 02:58:05 -0500
changeset 41840
fe350460fb1c
parent 41742
40130f43df93
child 42061
93ab30300b06
permissions
-rw-r--r--

Remove C99-obsoleted constructs

See [this development thread for a future Fedora change](https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/CJXKTLXJUPZ4F2C2VQOTNMEA5JAUPMBD/) or [the proposed change page](https://fedoraproject.org/wiki/Changes/PortingToModernC). These may be made stronger errors in GCC 14.

Testing Done:
Configured with `-Dc_args='-Werror=implicit-int -Werror=implicit-function-declaration -Werror=int-conversion -Werror=strict-prototypes -Werror=old-style-definition'` and compiled.

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

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"
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
52 #define OPT_WINTRANS_IM_ENABLED "im-enabled"
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
53 #define OPT_WINTRANS_IM_ALPHA "im-alpha"
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
54 #define OPT_WINTRANS_IM_SLIDER "im-slider"
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
55 #define OPT_WINTRANS_IM_ONFOCUS "im-solid-onfocus"
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
56 #define OPT_WINTRANS_BL_ENABLED "bl-enabled"
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
57 #define OPT_WINTRANS_BL_ALPHA "bl-alpha"
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
58 #define OPT_WINTRANS_BL_ONFOCUS "bl-solid-onfocus"
38775
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 /*
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
61 * CODE
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
62 */
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
63
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
64 static GtkWidget *
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
65 get_buddy_list_window(void) {
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
66 PurpleBuddyList *purple_blist = NULL;
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
67
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
68 purple_blist = purple_blist_get_default();
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
69 if(PIDGIN_IS_BUDDY_LIST(purple_blist)) {
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
70 PidginBuddyList *pidgin_blist = PIDGIN_BUDDY_LIST(purple_blist);
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
71
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
72 return pidgin_blist->window;
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
73 }
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
74
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
75 return NULL;
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
76 }
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
77
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
78 /* Set window transparency level */
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
79 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
80 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
81 {
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
82 if (enabled) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
83 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
84 } else {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
85 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
86 }
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
87
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
88 /* 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
89 * 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
90 * 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
91 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
92 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
93
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
94 /* 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
95 * deal with transparency */
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
96 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
97 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
98 GtkWidget *window = NULL;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
99 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
100 GSettings *settings = NULL;
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
101
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
102 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
103 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
104
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
105 if(!g_settings_get_boolean(settings, OPT_WINTRANS_IM_ENABLED)) {
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
106 g_object_unref(settings);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
107 return;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
108 }
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
109 if(!g_settings_get_boolean(settings, OPT_WINTRANS_IM_ONFOCUS)) {
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
110 g_object_unref(settings);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
111 return;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
112 }
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
113
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
114 window = gtk_event_controller_get_widget(GTK_EVENT_CONTROLLER(self));
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
115 set_wintrans(window, g_settings_get_int(settings, OPT_WINTRANS_IM_ALPHA),
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
116 !enter);
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
117
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
118 g_object_unref(settings);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
119 }
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 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
122 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
123 GtkEventController *focus = NULL;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
124
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
125 focus = gtk_event_controller_focus_new();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
126 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
127 GINT_TO_POINTER(TRUE));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
128 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
129 GINT_TO_POINTER(FALSE));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
130
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
131 gtk_widget_add_controller(window, focus);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
132 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
133 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
134
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
135 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
136 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
137 GtkEventController *focus = NULL;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
138
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
139 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
140 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
141 gtk_widget_remove_controller(window, focus);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
142 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
143 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
144 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
145
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
146 /* When buddy list window is focused,
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
147 * if we're only transparent when unfocused, deal with transparency */
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
148 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
149 focus_blist_win_cb(GtkEventControllerFocus *self, gpointer data)
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
150 {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
151 GtkWidget *window = NULL;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
152 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
153 GSettings *settings = NULL;
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
154
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
155 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
156 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
157
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
158 if(!g_settings_get_boolean(settings, OPT_WINTRANS_BL_ENABLED)) {
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
159 g_object_unref(settings);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
160 return;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
161 }
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
162 if(!g_settings_get_boolean(settings, OPT_WINTRANS_BL_ONFOCUS)) {
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
163 g_object_unref(settings);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
164 return;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
165 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
166
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
167 window = gtk_event_controller_get_widget(GTK_EVENT_CONTROLLER(self));
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
168 set_wintrans(window,
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
169 g_settings_get_int(settings, OPT_WINTRANS_BL_ALPHA),
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
170 !enter);
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
171
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
172 g_object_unref(settings);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
173 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
174
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
175 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
176 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
177 GSettings *settings = NULL;
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
178
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
179 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
180 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
181
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
182 g_settings_set_int(settings, OPT_WINTRANS_IM_ALPHA, alpha);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
183
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
184 /* 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
185 * don't take effect immediately */
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
186 if(!g_settings_get_boolean(settings, OPT_WINTRANS_IM_ONFOCUS)) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
187 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
188 }
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
189
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
190 g_object_unref(settings);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
191 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
192
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
193 /* 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
194 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
195 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
196 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
197 {
41696
35f8ce475b21 Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents: 41665
diff changeset
198 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
199 return;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
200 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
201
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
202 purple_debug_info(WINTRANS_PLUGIN_ID,
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
203 "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
204
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
205 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
206
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
207 /* Remove the focus cbs */
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
208 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
209 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
210
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
211 static void set_blist_trans(GtkWidget *w, const char *pref) {
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
212 GtkWidget *window = get_buddy_list_window();
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
213 gboolean enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w));
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
214 purple_prefs_set_bool(pref, enabled);
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
215 if (window != NULL) {
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
216 set_wintrans(window, purple_prefs_get_int(OPT_WINTRANS_BL_ALPHA),
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
217 purple_prefs_get_bool(OPT_WINTRANS_BL_ENABLED));
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
218 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
219 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
220
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
221 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
222 remove_slider(GtkWidget *slider_frame) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
223 gtk_widget_unparent(slider_frame);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
224 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
225
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
226 static void
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
227 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
228 {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
229 GtkWidget *slider = data;
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
230 gint alpha = 255;
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
231
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
232 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
233 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
234 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
235
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
236 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
237 GtkWidget *vbox = NULL;
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
238 GtkWidget *slider_frame;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
239 GtkWidget *hbox;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
240 GtkWidget *label, *slider;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
241 gint imalpha = 255;
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
242 GSettings *settings = NULL;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
243
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
244 /* 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
245 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
246 return;
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
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
249 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
250 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
251 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
252 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
253
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
254 if(vbox == NULL) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
255 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
256 return;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
257 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
258
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
259 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
260 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
261
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
262 slider_frame = gtk_frame_new(NULL);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
263 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
264 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
265 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
266
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
267 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
268 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
269
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
270 label = gtk_label_new(_("Opacity:"));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
271 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
272
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
273 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
274 gtk_widget_set_hexpand(slider, TRUE);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
275 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
276
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
277 imalpha = g_settings_get_int(settings, OPT_WINTRANS_IM_ALPHA);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
278 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
279 /* 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
280 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
281 G_CALLBACK(change_alpha), win);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
282
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
283 /* We cannot use g_settings_bind because GtkScale has no value property. */
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
284 g_signal_connect_object(settings, "changed::" OPT_WINTRANS_IM_ALPHA,
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
285 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
286
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
287 /* Set the initial transparency level */
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
288 set_wintrans(win, g_settings_get_int(settings, OPT_WINTRANS_IM_ALPHA),
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
289 TRUE);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
290
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
291 /* 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
292 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
293 (GDestroyNotify)remove_slider);
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
294
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
295 g_object_unref(settings);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
296 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
297
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
298 /* 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
299 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
300 GApplication *application = NULL;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
301 GList *wins;
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
302 GSettings *settings = NULL;
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
303 gboolean im_enabled = FALSE;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
304
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
305 application = g_application_get_default();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
306 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
307
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
308 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
309 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
310 im_enabled = g_settings_get_boolean(settings, OPT_WINTRANS_IM_ENABLED);
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
311 g_object_unref(settings);
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
312
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
313 for(; wins; wins = wins->next) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
314 GtkWidget *window = wins->data;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
315
41696
35f8ce475b21 Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents: 41665
diff changeset
316 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
317 continue;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
318 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
319
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
320 if (im_enabled) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
321 set_wintrans(window, 0, FALSE);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
322 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
323
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
324 /* Remove the focus cbs */
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
325 if (remove_signal) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
326 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
327 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
328
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
329 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
330 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
331 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
332
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
333 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
334 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
335 GSettings *settings = NULL;
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
336
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
337 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
338 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
339
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
340 /* check prefs to see if we want trans */
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
341 if (g_settings_get_boolean(settings, OPT_WINTRANS_IM_ENABLED)) {
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
342 set_wintrans(window,
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
343 g_settings_get_int(settings, OPT_WINTRANS_IM_ALPHA),
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
344 TRUE);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
345
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
346 if (g_settings_get_boolean(settings, OPT_WINTRANS_IM_SLIDER)) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
347 add_slider(window);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
348 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
349 }
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
350
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
351 g_object_unref(settings);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
352 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
353
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
354 static void update_convs_wintrans(GtkWidget *toggle_btn, const char *pref) {
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
355 purple_prefs_set_bool(pref, gtk_toggle_button_get_active(
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
356 GTK_TOGGLE_BUTTON(toggle_btn)));
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
357
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
358 if (purple_prefs_get_bool(OPT_WINTRANS_IM_ENABLED)) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
359 GApplication *application = NULL;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
360 GList *wins;
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
361
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
362 application = g_application_get_default();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
363 wins = gtk_application_get_windows(GTK_APPLICATION(application));
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
364
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
365 for(; wins; wins = wins->next) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
366 GtkWidget *win = wins->data;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
367
41696
35f8ce475b21 Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents: 41665
diff changeset
368 if(!PIDGIN_IS_DISPLAY_WINDOW(win)) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
369 continue;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
370 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
371
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
372 set_conv_window_trans(win);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
373
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
374 if (!purple_prefs_get_bool(OPT_WINTRANS_IM_SLIDER)) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
375 g_object_set_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
376 }
41177
9e78b5799658 Remove usage of pidgin_conv_is_hidden from transparency plugin
Sorvival <sorvival@tutanota.com>
parents: 41081
diff changeset
377 }
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
378 } else {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
379 remove_convs_wintrans(FALSE);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
380 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
381 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
382
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
383 static void
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
384 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
385 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
386 {
41696
35f8ce475b21 Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents: 41665
diff changeset
387 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
388 return;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
389 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
390
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
391 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
392 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
393 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
394
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
395 static void
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
396 blist_created_cb(PurpleBuddyList *purple_blist, gpointer data) {
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
397 GtkWidget *window = get_buddy_list_window();
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
398 GSettings *settings = NULL;
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
399
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
400 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
401 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
402
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
403 if (window != NULL) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
404 GtkEventController *focus = NULL;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
405
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
406 if (g_settings_get_boolean(settings, OPT_WINTRANS_BL_ENABLED)) {
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
407 set_wintrans(window,
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
408 g_settings_get_int(settings, OPT_WINTRANS_BL_ALPHA),
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
409 TRUE);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
410 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
411
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
412 focus = gtk_event_controller_focus_new();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
413
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
414 g_signal_connect(focus, "enter", G_CALLBACK(focus_blist_win_cb),
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
415 GINT_TO_POINTER(TRUE));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
416 g_signal_connect(focus, "leave", G_CALLBACK(focus_blist_win_cb),
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
417 GINT_TO_POINTER(FALSE));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
418
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
419 gtk_widget_add_controller(window, focus);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
420 g_object_set_data(G_OBJECT(window), WINTRANS_CONTROLLER_KEY, focus);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
421 }
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
422
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
423 g_object_unref(settings);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
424 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
425
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
426 static void alpha_change(GtkWidget *w, gpointer data) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
427 GApplication *application = NULL;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
428 GList *wins;
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
429 int imalpha = gtk_range_get_value(GTK_RANGE(w));
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
430
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
431 application = g_application_get_default();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
432 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
433
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
434 for(; wins; wins = wins->next) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
435 GtkWidget *window = wins->data;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
436
41696
35f8ce475b21 Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents: 41665
diff changeset
437 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
438 continue;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
439 }
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
440
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
441 set_wintrans(window, imalpha, TRUE);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
442 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
443 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
444
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
445 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
446 alpha_pref_set_int(GtkEventControllerFocus *self, gpointer data) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
447 const char *pref = data;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
448 GtkWidget *slider = NULL;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
449 int alpha = 255;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
450
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
451 slider = gtk_event_controller_get_widget(GTK_EVENT_CONTROLLER(self));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
452 alpha = gtk_range_get_value(GTK_RANGE(slider));
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
453
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
454 purple_prefs_set_int(pref, alpha);
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
455 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
456
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
457 static void bl_alpha_change(GtkWidget *w, gpointer data) {
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
458 GtkWidget *window = get_buddy_list_window();
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
459 if (window != NULL) {
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
460 change_alpha(w, window);
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
461 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
462 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
463
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
464 static void
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
465 update_existing_convs(void) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
466 GApplication *application = NULL;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
467 GList *wins;
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
468
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
469 application = g_application_get_default();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
470 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
471
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
472 for(; wins; wins = wins->next) {
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
473 GtkWidget *window = wins->data;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
474
41696
35f8ce475b21 Rename PidginConversationWindow to PidginDisplayWindow as it holds more than conversations now
Gary Kramlich <grim@reaperworld.com>
parents: 41665
diff changeset
475 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
476 continue;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
477 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
478
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
479 set_conv_window_trans(window);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
480
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
481 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
482 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
483 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
484
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
485 static GtkWidget *
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
486 get_config_frame(PurplePlugin *plugin) {
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
487 GtkWidget *ret;
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
488 GtkWidget *imtransbox, *bltransbox;
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
489 GtkWidget *hbox;
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
490 GtkWidget *label, *slider;
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
491 GtkWidget *button;
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
492 GtkWidget *trans_box;
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
493 GtkEventController *focus = NULL;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
494
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
495 ret = gtk_box_new(GTK_ORIENTATION_VERTICAL, 18);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
496 gtk_widget_set_margin_start(ret, 12);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
497 gtk_widget_set_margin_end(ret, 12);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
498 gtk_widget_set_margin_top(ret, 12);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
499 gtk_widget_set_margin_bottom(ret, 12);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
500
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
501 /* IM Convo trans options */
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
502 imtransbox = pidgin_make_frame(ret, _("IM Conversation Windows"));
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
503 button = pidgin_prefs_checkbox(_("_IM window transparency"),
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
504 OPT_WINTRANS_IM_ENABLED, imtransbox);
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
505 g_signal_connect(G_OBJECT(button), "clicked",
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
506 G_CALLBACK(update_convs_wintrans),
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
507 (gpointer) OPT_WINTRANS_IM_ENABLED);
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
508
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
509 trans_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 18);
39173
7adf95ad7b4a Replace pidgin_toggle_sensitive by g_object_bind_property.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38777
diff changeset
510 g_object_bind_property(button, "active", trans_box, "sensitive",
7adf95ad7b4a Replace pidgin_toggle_sensitive by g_object_bind_property.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38777
diff changeset
511 G_BINDING_SYNC_CREATE);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
512
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
513 button = pidgin_prefs_checkbox(_("_Show slider bar in IM window"),
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
514 OPT_WINTRANS_IM_SLIDER, trans_box);
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
515 g_signal_connect(G_OBJECT(button), "clicked",
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
516 G_CALLBACK(update_convs_wintrans),
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
517 (gpointer) OPT_WINTRANS_IM_SLIDER);
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
518
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
519 button = pidgin_prefs_checkbox(
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
520 _("Remove IM window transparency on focus"),
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
521 OPT_WINTRANS_IM_ONFOCUS, trans_box);
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
522
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
523 gtk_box_append(GTK_BOX(imtransbox), trans_box);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
524
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
525 /* IM transparency slider */
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
526 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
527
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
528 label = gtk_label_new(_("Opacity:"));
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
529 gtk_box_append(GTK_BOX(hbox), label);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
530
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
531 slider = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 50, 255, 1);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
532 gtk_range_set_value(GTK_RANGE(slider),
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
533 purple_prefs_get_int(OPT_WINTRANS_IM_ALPHA));
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
534
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
535 g_signal_connect(G_OBJECT(slider), "value-changed",
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
536 G_CALLBACK(alpha_change), NULL);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
537 focus = gtk_event_controller_focus_new();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
538 g_signal_connect(focus, "leave", G_CALLBACK(alpha_pref_set_int),
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
539 (gpointer)OPT_WINTRANS_IM_ALPHA);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
540 gtk_widget_add_controller(slider, focus);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
541
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
542 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
543
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
544 gtk_box_append(GTK_BOX(trans_box), hbox);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
545
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
546 /* Buddy List trans options */
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
547 bltransbox = pidgin_make_frame (ret, _("Buddy List Window"));
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
548 button = pidgin_prefs_checkbox(_("_Buddy List window transparency"),
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
549 OPT_WINTRANS_BL_ENABLED, bltransbox);
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
550 g_signal_connect(G_OBJECT(button), "clicked",
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
551 G_CALLBACK(set_blist_trans),
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
552 (gpointer) OPT_WINTRANS_BL_ENABLED);
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
553
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
554 trans_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 18);
39173
7adf95ad7b4a Replace pidgin_toggle_sensitive by g_object_bind_property.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38777
diff changeset
555 g_object_bind_property(button, "active", trans_box, "sensitive",
7adf95ad7b4a Replace pidgin_toggle_sensitive by g_object_bind_property.
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 38777
diff changeset
556 G_BINDING_SYNC_CREATE);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
557 button = pidgin_prefs_checkbox(
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
558 _("Remove Buddy List window transparency on focus"),
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
559 OPT_WINTRANS_BL_ONFOCUS, trans_box);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
560 gtk_box_append(GTK_BOX(bltransbox), trans_box);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
561
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
562 /* IM transparency slider */
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
563 hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 5);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
564
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
565 label = gtk_label_new(_("Opacity:"));
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
566 gtk_box_append(GTK_BOX(hbox), label);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
567
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
568 slider = gtk_scale_new_with_range(GTK_ORIENTATION_HORIZONTAL, 50, 255, 1);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
569 gtk_range_set_value(GTK_RANGE(slider),
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
570 purple_prefs_get_int(OPT_WINTRANS_BL_ALPHA));
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
571
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
572 g_signal_connect(G_OBJECT(slider), "value-changed",
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
573 G_CALLBACK(bl_alpha_change), NULL);
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
574 focus = gtk_event_controller_focus_new();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
575 g_signal_connect(focus, "leave", G_CALLBACK(alpha_pref_set_int),
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
576 (gpointer)OPT_WINTRANS_BL_ALPHA);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
577 gtk_widget_add_controller(slider, focus);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
578
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
579 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
580
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
581 gtk_box_append(GTK_BOX(trans_box), hbox);
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
582
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
583 return ret;
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
584 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
585
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
586 static GPluginPluginInfo *
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
587 transparency_query(GError **error) {
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
588 const gchar * const authors[] = {
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
589 "Pidgin Developers <devel@pidgin.im>",
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
590 NULL
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
591 };
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
592
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
593 return pidgin_plugin_info_new(
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
594 "id", WINTRANS_PLUGIN_ID,
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
595 "name", N_("Transparency"),
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
596 "version", DISPLAY_VERSION,
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
597 "category", N_("User interface"),
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
598 "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
599 "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
600 "authors", authors,
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
601 "website", PURPLE_WEBSITE,
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
602 "abi-version", PURPLE_ABI_VERSION,
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
603 "gtk-config-frame-cb", get_config_frame,
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
604 NULL
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
605 );
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
606 }
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
607
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
608 static gboolean
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
609 transparency_load(GPluginPlugin *plugin, GError **error) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
610 GApplication *application = NULL;
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
611 GtkWidget *window = NULL;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
612
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
613 application = g_application_get_default();
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
614 g_signal_connect(application, "window-added",
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
615 G_CALLBACK(new_conversation_cb), NULL);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
616 g_signal_connect(application, "window-removed",
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
617 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
618
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
619 update_existing_convs();
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
620
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
621 window = get_buddy_list_window();
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
622 if(window != NULL) {
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
623 blist_created_cb(NULL, NULL);
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
624 } else {
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
625 purple_signal_connect(pidgin_blist_get_handle(),
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
626 "gtkblist-created", plugin,
41314
0dc72eacd8bf Replace PURPLE_CALLBACK by G_CALLBACK
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41299
diff changeset
627 G_CALLBACK(blist_created_cb), NULL);
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
628 }
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
629
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
630 return TRUE;
38775
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
631 }
138239f698a9 Port transparency plugin from WinAPI to GTK. Fixes #3124
Daniel Kamil Kozar <dkk089@gmail.com>
parents:
diff changeset
632
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
633 static gboolean
41081
0c1c063d71f6 Add the unload parameter to a few plugins that I missed on the gplugin 0.35.0 update
Gary Kramlich <grim@reaperworld.com>
parents: 40994
diff changeset
634 transparency_unload(GPluginPlugin *plugin, gboolean shutdown, GError **error) {
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
635 GtkWidget *window = NULL;
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
636
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
637 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
638
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
639 remove_convs_wintrans(TRUE);
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
640
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
641 window = get_buddy_list_window();
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
642 if (window != NULL) {
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
643 GSettings *settings = NULL;
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
644 GtkEventController *focus = NULL;
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
645
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
646 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
647 purple_core_get_settings_backend());
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
648 if (g_settings_get_boolean(settings, OPT_WINTRANS_BL_ENABLED)) {
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
649 set_wintrans(window, 0, FALSE);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
650 }
41742
40130f43df93 Convert transparency plugin to GSettings
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41696
diff changeset
651 g_object_unref(settings);
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
652
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
653 /* Remove the focus cbs */
41658
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
654 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
655 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
656 gtk_widget_remove_controller(window, focus);
eef0cabd6340 Get transparency plugin working again
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 41314
diff changeset
657 }
40994
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
658 }
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
659
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
660 return TRUE;
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
661 }
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
662
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
663 GPLUGIN_NATIVE_PLUGIN_DECLARE(transparency)
1eb6d260980d Update the transparency plugin so it'll load again.
Gary Kramlich <grim@reaperworld.com>
parents: 40360
diff changeset
664

mercurial