Hi,
I'm writing a trayicon (gtk-status-icon) in C for a linux-application. I 
created an event-handler for window-state-events. When the window gets 
minimized I wanna hide it to the tray. That means if the changed_mask and 
new_window_state become GDK_WINDOW_STATE_ICONIFIED.

But my problem is that also just switching to another desktop under X results 
in the state-handler to get executed and the window gets the ICONIFIED-state. 
Why is minimizing a window and switching the desktop are having the same state 
in GDK?

Here a little proof:

#include <gtk/gtk.h>
#include <stdio.h>

gboolean window_state_event (GtkWidget *widget, GdkEventWindowState *event)
{
    printf("%d\n",event->changed_mask);
    printf("%d\n\n",event->new_window_state);
    return TRUE;
} 

int main( int   argc,char *argv[] )
{
    GtkWidget *window;

    gtk_init (&argc, &argv);
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
    gtk_widget_show (window);
    g_signal_connect (G_OBJECT (window), "window-state-event", G_CALLBACK 
(window_state_event),NULL);   
    gtk_main();
    
    return 0;
}

Just compile with:
        gcc test.c -o test -Wall -Werror -pedantic `pkg-config --cflags --libs 
gtk+-2.0`

And now you can test it. Minimize the window, which results in:
2
2
or switch the desktop while the window is visible, again:
2
2

So now for my problem: when I code a trayicon I wanna hide it when it gets 
minimized but not! when a user switched the desktop. This seems impossible 
because the event is the same. Do you have any idea, any thoughts with this? 
Any help or hint is really appreatiated!

cu
_______________________________________________
gtk-app-devel-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to