pidgin/plugins/transparency/transparency.c

Sun, 10 Aug 2025 23:44:08 +0800

author
Gong Zhile <gongzl@stu.hebust.edu.cn>
date
Sun, 10 Aug 2025 23:44:08 +0800
branch
purple_conversation_find_message_by_id
changeset 43309
099e1dfb856b
parent 43253
0cc00d7d6215
permissions
-rw-r--r--

Add Purple.Conversation.find_message_by_id

The method was added so that a protocol or plugin could easily lookup
for the reference for a message. This will be especially useful when a
protocol received a quoted message but only with an id.

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

mercurial