summarylogtreecommitdiffstats
path: root/gtk2.patch
blob: 8c356e391a6ecd8e0c695cef1ae224b8e9b2569d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
diff -up src/wmtrash-0.2/Makefile.orig src/wmtrash-0.2/Makefile
--- src/wmtrash-0.2/Makefile.orig	2004-12-27 08:25:06.000000000 -0700
+++ src/wmtrash-0.2/Makefile	2014-05-16 05:33:55.000000000 -0600
@@ -25,7 +25,7 @@ CONFIGFILE = default.cf
 CFLAGS = -g -Wall
 DEFINE = -D__CONFPATH='"$(CONFDIR)"' -D__CONFFILE='"$(CONFIGFILE)"' -D__ICONPATH='"$(PREFIX)$(SHAREDIR)"'
 
-LIBCONFIG = `gtk-config --cflags --libs`
+LIBCONFIG = `pkg-config x11 gtk+-2.0 --cflags --libs`
 
 
 $(BIN) : $(SRC)
diff -up src/wmtrash-0.2/wmtrash.c.orig src/wmtrash-0.2/wmtrash.c
--- src/wmtrash-0.2/wmtrash.c.orig	2014-05-16 05:34:16.000000000 -0600
+++ src/wmtrash-0.2/wmtrash.c	2014-05-16 05:52:22.000000000 -0600
@@ -17,6 +17,27 @@
 #include <gdk/gdkx.h>
 #include "wmtrash.h"
 
+void show_dockapp(GtkWidget *dockapp)
+{
+	Window w, p, dummy1, *dummy2;
+	unsigned int dummy3;
+	XWMHints *hints;
+
+	XQueryTree(GDK_DISPLAY(), GDK_WINDOW_XID(dockapp->window), &dummy1, &p, &dummy2, &dummy3);
+	if (dummy2)
+		XFree(dummy2);
+	w = XCreateSimpleWindow(GDK_DISPLAY(), p, 0, 0, 1, 1, 0, 0, 0);
+	XReparentWindow(GDK_DISPLAY(), GDK_WINDOW_XID(dockapp->window), w, 0, 0);
+	gtk_widget_show_all(dockapp);
+	hints = XGetWMHints(GDK_DISPLAY(), GDK_WINDOW_XID(dockapp->window));
+	hints->flags |= StateHint;
+	hints->initial_state = WithdrawnState;
+	XSetWMHints(GDK_DISPLAY(), GDK_WINDOW_XID(dockapp->window), hints);
+	XFree(hints);
+	XReparentWindow(GDK_DISPLAY(), GDK_WINDOW_XID(dockapp->window), p, 0, 0);
+	XDestroyWindow(GDK_DISPLAY(), w);
+}
+
 
 // Start main *******************************************************************
 
@@ -68,14 +89,14 @@ int main( int argc, char *argv[] ) {
 	
 	gtk_init(&argc, &argv);
 	dockapp = (GtkWidget *) build_dockapp(configfile);
-	gtk_widget_show_all (dockapp);
+	show_dockapp (dockapp);
 	gtk_main ();
 	return(0);
 } // end main
 
 
 GtkWidget * build_dockapp(char *configfile) {
-	static GtkWidget *mainwin;
+	static GtkWidget *mainwin = NULL;
 	static GtkWidget *mainbox;
 	static GtkWidget *box;
 	static GtkWidget *pixmap;
@@ -102,7 +123,8 @@ GtkWidget * build_dockapp(char *configfi
 	parse_from_config(wmtrash->configfile, wmtrash->param_path, wmtrash->path);
 		
 	// GTK stuff *******************************************************************
-	gtk_widget_destroy(mainwin);
+	if (mainwin)
+		gtk_widget_destroy(mainwin);
 	mainwin = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 	gtk_widget_realize(mainwin);
 	mainbox = create_main_dockapp_icon_window(mainwin, 52);
@@ -287,7 +309,7 @@ void close_callback(
 	parent = gtk_widget_get_ancestor(entry, GTK_TYPE_WINDOW); 
 	gtk_widget_destroy(parent);	// close the dialog box
 	dockapp = (GtkWidget *) build_dockapp(data->configfile);	// will redraw icons
-	gtk_widget_show_all (dockapp);
+	show_dockapp (dockapp);
 }