On Sat, Aug 30, 2008 at 10:55 PM, Diego Jacobi <jacobidiego@xxxxxxxxx> wrote: > I cant see that link. Try this one, it's the same one I quote in my last email http://mail.gnome.org/archives/gtk-app-devel-list/2008-July/msg00077.html > > Your mails was very informative, can you please explain what your last > problem is about? > > Also, why do you call gtk_widget_realize(win); > Doesnt show_all realize all the widgets? > Well, I don't know neither :-) But it's not related to my question ... With it or not, the sample still show the same problem. The the link provides the solution. KC > > > 2008/8/30 Kuang-Chun Cheng <kcc1967@xxxxxxxxx>: >> This message explains my question and fix my problem :-) >> >> http://www.mail-archive.com/gtk-app-devel-list@xxxxxxxxx/msg11790.html >> >> Since I did not found this behavior on Linux, so I think the Win32 port of Gtk+ >> may still has this "bug". >> >> >> KC >> >> >> On Sat, Aug 30, 2008 at 2:08 PM, Kuang-Chun Cheng <kcc1967@xxxxxxxxx> wrote: >>>>> 2008/8/28 Tor Lillqvist <tml@xxxxxx>: >>>>>> Have the idle callback function return FALSE... Schedule it again with >>>>>> g_idle_add() whenever you have something new that needs to be done in >>>>>> the GUI thread. >>> >>> First, thanks for you guys here, I had successfully porting my Gtk2 app. from >>> Linux to Win32 :-) However, I found a behavior of Linux and Win32 is >>> quite different ... >>> Let me explain what I'm doing: >>> >>> hello button ---> disable itself and create a thread to run non-gui job. >>> ---> after non-gui job done, use g_add_idle() to enable hello >>> button again. >>> >>> What's odd is when I click on the button, it works OK at the first time. >>> But when I click on it again ... it stop receive my mouse event !!!! >>> >>> If I move my mouse away from the button then move it back and click on it again, >>> it works again. >>> >>> I did not see this strange behavior under Linux. I can keep my mouse on top of >>> the button, just click on it again and again ... all clicks work perfectly. >>> >>> The source code is here (hopefully, not too long), could someone tell me what's >>> wrong in my code ?? >>> My Win32 platform is WinXP/SP3, and I'm using gtk+-bundle-2.12.11.zip which I >>> downloaded from http://www.gtk.org/download-windows.html. >>> >>> Thanks a lot >>> KC >>> >>> ------------------------------------------------------------------ >>> /* button2.c */ >>> >>> #include <stdlib.h> >>> #include <gtk/gtk.h> >>> >>> gpointer non_gui_worker(gpointer data); >>> gboolean non_gui_idle(gpointer data); >>> void gui_cb_clicked(GtkWidget *widget, gpointer data); >>> >>> gboolean non_gui_idle(gpointer data) >>> { >>> GtkWidget *widget = data; >>> gtk_widget_set_sensitive(widget, TRUE); >>> return FALSE; >>> } >>> >>> gpointer non_gui_worker(gpointer data) >>> { >>> printf("DO SOMETHING IN NON-GUI THREAD ...\n"); >>> g_idle_add(non_gui_idle, data); >>> return NULL; >>> } >>> >>> void gui_cb_clicked(GtkWidget *widget, gpointer data) >>> { >>> gtk_widget_set_sensitive(widget, FALSE); >>> g_thread_create(non_gui_worker, widget, FALSE, NULL); >>> } >>> >>> int main (int argc, char *argv[]) >>> { >>> GtkWidget *win = NULL; >>> GtkWidget *button = NULL; >>> >>> g_thread_init(NULL); >>> gdk_threads_init(); >>> gtk_init(&argc, &argv); >>> >>> gdk_threads_enter(); >>> win = gtk_window_new(GTK_WINDOW_TOPLEVEL); >>> gtk_container_set_border_width(GTK_CONTAINER(win), 10); >>> >>> g_signal_connect(G_OBJECT(win), "destroy", >>> G_CALLBACK(gtk_main_quit), NULL); >>> >>> gtk_widget_realize(win); >>> button = gtk_button_new_with_label("Hello Gtk+-2.0"); >>> >>> g_signal_connect(G_OBJECT(button), "clicked", >>> G_CALLBACK(gui_cb_clicked), (gpointer) "Data Passed"); >>> >>> gtk_container_add(GTK_CONTAINER(win), button); >>> >>> gtk_widget_show_all(win); >>> gtk_main(); >>> gdk_threads_leave(); >>> exit(0); >>> } >>> >> _______________________________________________ >> gtk-list mailing list >> gtk-list@xxxxxxxxx >> http://mail.gnome.org/mailman/listinfo/gtk-list >> > _______________________________________________ > gtk-list mailing list > gtk-list@xxxxxxxxx > http://mail.gnome.org/mailman/listinfo/gtk-list > _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list