|
Lines 21-26
Link Here
|
| 21 |
* before calling foo_create_main_icon_window. Returned event box |
21 |
* before calling foo_create_main_icon_window. Returned event box |
| 22 |
* will be realized by foo_create_main_icon_window. You should to show |
22 |
* will be realized by foo_create_main_icon_window. You should to show |
| 23 |
* icon window as well as main window before gtk_main(). |
23 |
* icon window as well as main window before gtk_main(). |
|
|
24 |
* |
| 25 |
* Call foo_set_wmhints() after both windows are shown (gtk_widget_show()). |
| 24 |
* |
26 |
* |
| 25 |
* Input: |
27 |
* Input: |
| 26 |
* mw Pointer to main window |
28 |
* mw Pointer to main window |
|
Lines 34-53
Link Here
|
| 34 |
char *margv[]) { |
36 |
char *margv[]) { |
| 35 |
|
37 |
|
| 36 |
GtkWidget *foobox; /* This will become icon box */ |
38 |
GtkWidget *foobox; /* This will become icon box */ |
| 37 |
Window xmw; |
|
|
| 38 |
XWMHints *wm_hints; |
| 39 |
|
| 40 |
xmw = GDK_WINDOW_XWINDOW(mw->window); |
| 41 |
|
39 |
|
| 42 |
foobox = gtk_event_box_new(); |
40 |
foobox = gtk_event_box_new(); |
| 43 |
gtk_widget_set_usize(foobox, s, s); |
41 |
gtk_widget_set_usize(foobox, s, s); |
| 44 |
gtk_container_add (GTK_CONTAINER (mw), foobox); |
42 |
gtk_container_add (GTK_CONTAINER (mw), foobox); |
| 45 |
gtk_widget_realize(foobox); |
43 |
gtk_widget_realize(foobox); |
| 46 |
|
44 |
|
|
|
45 |
return foobox; |
| 46 |
} |
| 47 |
|
| 48 |
/* |
| 49 |
* Set WMHints on the dockapp (icon) window. Needs to be called after |
| 50 |
* the main window is shown, due to changes in GTK+ 2.4. |
| 51 |
* |
| 52 |
* Input: |
| 53 |
* mw Pointer to main window |
| 54 |
* dw Pointer to icon (dockapp) window |
| 55 |
* margc, margv argc and argv of main program for XSetCommand |
| 56 |
*/ |
| 57 |
void foo_set_wmhints(GtkWidget *mw, |
| 58 |
GtkWidget *dw, |
| 59 |
int margc, |
| 60 |
char *margv[]) { |
| 61 |
Window xmw; |
| 62 |
XWMHints *wm_hints; |
| 63 |
|
| 64 |
xmw = GDK_WINDOW_XWINDOW(mw->window); |
| 65 |
|
| 47 |
/* Time for game with Xlib */ |
66 |
/* Time for game with Xlib */ |
| 48 |
wm_hints = XAllocWMHints(); |
67 |
wm_hints = XAllocWMHints(); |
| 49 |
wm_hints->window_group = xmw; |
68 |
wm_hints->window_group = xmw; |
| 50 |
wm_hints->icon_window = GDK_WINDOW_XWINDOW(foobox->window); |
69 |
wm_hints->icon_window = GDK_WINDOW_XWINDOW(dw->window); |
| 51 |
wm_hints->icon_x = 0; |
70 |
wm_hints->icon_x = 0; |
| 52 |
wm_hints->icon_y = 0; |
71 |
wm_hints->icon_y = 0; |
| 53 |
wm_hints->initial_state = WithdrawnState; |
72 |
wm_hints->initial_state = WithdrawnState; |
|
Lines 60-65
Link Here
|
| 60 |
XSetCommand(GDK_DISPLAY(), xmw, margv, margc); |
79 |
XSetCommand(GDK_DISPLAY(), xmw, margv, margc); |
| 61 |
|
80 |
|
| 62 |
XFree(wm_hints); |
81 |
XFree(wm_hints); |
| 63 |
|
|
|
| 64 |
return foobox; |
| 65 |
} |
82 |
} |