Please have a look at the gedit-view search thingie, it also is a GTK_WINDOW_POPUP type window, but can receive focus by handling some focus stuff manually iirc.
Jesse Op maandag 01-12-2008 om 00:47 uur [tijdzone +0100], schreef Perriman: > Hi all, > > I want to create a GTK_WINDOW_POPUP and change the type > to GTK_WINDOW_TOPLEVEL. > > If you have used eclipse, when you are writting you can see a > calltip (but the focus is in the editor) and if you press F2, then the > calltip window gets the focus and show the decoration. > > I'm trying for two weeks and I cannot do the same in the > example program. If I set GTK_WINDOW_POPUP then I cannot set the focus > to the window and, If I use GTK_WINDOW_TOPLEVEL then the window lost > the focus. If I show the popup window and set the focus to the main > window, it does not work... I'm desperated.... > > Can you help me? > > Thank you again!! > > El Sun, 30 Nov 2008 23:37:29 +0100 > Perriman <[EMAIL PROTECTED]> escribió: > > > Hi Michael > > > > I paste the code: > > > > #include <gtk/gtk.h> > > #include <gdk/gdkkeysyms.h> > > > > static GtkWidget *window; > > static GtkWidget *view; > > static GtkWidget *popup; > > static GtkWidget *popup_view; > > static gboolean set_focus = FALSE; > > > > static void > > destroy_cb(GtkObject *object,gpointer user_data) > > { > > gtk_main_quit (); > > } > > > > static gboolean > > focus_window(gpointer win) > > { > > g_debug("focus win"); > > gtk_window_present_with_time(GTK_WINDOW(win),GDK_CURRENT_TIME); > > gtk_window_activate_focus(GTK_WINDOW(win)); > > gtk_widget_grab_focus(GTK_WIDGET(win)); > > return FALSE; > > } > > > > > > static void > > show_cb(GtkWidget *widget, gpointer user_data) > > { > > g_debug("show popup"); > > focus_window(window); > > } > > > > static void > > realize_cb(GtkWidget *widget, gpointer user_data) > > { > > g_debug("realize popup"); > > focus_window(window); > > } > > > > static void > > focus_in_cb(GtkWidget *widget, gpointer user_data) > > { > > g_debug("focus-in"); > > //focus_window(window); > > } > > > > static void > > focus_out_win_cb(GtkWidget *widget, gpointer user_data) > > { > > g_debug("focus-out-win"); > > /* if (!set_focus) > > focus_window(window); > > else > > set_focus = FALSE; > > */ > > } > > > > static void > > map_cb(GtkWidget *widget, gpointer user_data) > > { > > g_debug("map popup"); > > focus_window(window); > > } > > > > static gboolean > > key_press(GtkWidget *widget, > > GdkEventKey *event, > > gpointer user_data) > > { > > if (event->keyval == GDK_F5) > > { > > if (GTK_WIDGET_VISIBLE(GTK_WIDGET(popup))) > > { > > gtk_widget_hide(popup); > > } > > else > > { > > gtk_widget_show_all(popup); > > focus_window(window); > > > > //g_timeout_add(2000,focus_window,window); > > } > > } > > else if (event->keyval == GDK_F6) > > { > > if (GTK_WIDGET_VISIBLE(GTK_WIDGET(popup))) > > { > > g_debug("focus al popup"); > > set_focus = TRUE; > > focus_window(popup); > > gtk_widget_grab_focus(popup_view); > > } > > } > > > > return FALSE; > > } > > > > GtkWidget* > > create_popup (void) > > { > > popup = gtk_window_new(GTK_WINDOW_TOPLEVEL); > > gtk_window_set_transient_for(GTK_WINDOW(popup),GTK_WINDOW(window)); > > gtk_window_set_focus_on_map(GTK_WINDOW(popup), FALSE); > > gtk_window_set_type_hint(GTK_WINDOW(popup), > > GDK_WINDOW_TYPE_HINT_TOOLTIP); > > gtk_window_set_decorated(GTK_WINDOW(popup),FALSE); > > gtk_container_set_border_width(GTK_CONTAINER(popup),2); > > gtk_window_resize(GTK_WINDOW(popup),200,200); > > popup_view = gtk_text_view_new(); > > GtkWidget *scroll = gtk_scrolled_window_new(NULL,NULL); > > gtk_container_add(GTK_CONTAINER(scroll),popup_view); > > gtk_container_add(GTK_CONTAINER(popup),scroll); > > > > /*g_signal_connect(popup, "show", G_CALLBACK(show_cb), NULL); > > g_signal_connect(popup, "realize", G_CALLBACK(realize_cb), > > NULL); g_signal_connect(popup, "map", G_CALLBACK(map_cb), NULL); > > g_signal_connect(popup, "focus-in-event", > > G_CALLBACK(focus_in_cb), NULL); */ > > > > return popup; > > } > > > > GtkWidget* > > create_window (void) > > { > > window = gtk_window_new(GTK_WINDOW_TOPLEVEL); > > gtk_window_resize(GTK_WINDOW(window),800,600); > > view = gtk_text_view_new(); > > gtk_window_set_default(GTK_WINDOW(window),view); > > GtkWidget *scroll = gtk_scrolled_window_new(NULL,NULL); > > gtk_container_add(GTK_CONTAINER(scroll),view); > > gtk_container_add(GTK_CONTAINER(window),scroll); > > g_signal_connect(view, "key-release-event", > > G_CALLBACK(key_press), NULL); > > g_signal_connect(window, "destroy", G_CALLBACK(destroy_cb), > > NULL); g_signal_connect(window, "focus-out-event", > > G_CALLBACK(focus_out_win_cb), NULL); > > return window; > > } > > > > int > > main (int argc, char *argv[]) > > { > > GtkWidget *window; > > > > gtk_set_locale (); > > gtk_init (&argc, &argv); > > > > window = create_window (); > > popup = create_popup(); > > gtk_widget_show_all (window); > > > > gtk_main (); > > return 0; > > } > > > > > > > > > > > > El Sat, 29 Nov 2008 16:50:09 -0600 > > Michael Cronenworth <[EMAIL PROTECTED]> escribió: > > > > > Perriman wrote: > > > > > > > > Can you help me?? (I attach the example) > > > > > > > > > > > > > > > > > > Sorry, I don't see the example. > _______________________________________________ > gedit-list mailing list > [EMAIL PROTECTED] > http://mail.gnome.org/mailman/listinfo/gedit-list -- Jesse van den Kieboom Personal: http://www.icecrew.nl Professional: http://www.novowork.com _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list