Re: [gedit-list] Focus problem
- From: Jesse van den Kieboom <jesse icecrew nl>
- To: Perriman <chuchiperriman gmail com>
- Cc: gedit-list <gedit-list gnome org>, Gtk app list <gtk-app-devel-list gnome org>
- Subject: Re: [gedit-list] Focus problem
- Date: Mon, 01 Dec 2008 16:32:21 +0100
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 <chuchiperriman gmail com> 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 <mike cchtml com> escribió:
> >
> > > Perriman wrote:
> > > >
> > > > Can you help me?? (I attach the example)
> > > >
> > > >
> > > >
> > >
> > > Sorry, I don't see the example.
> _______________________________________________
> gedit-list mailing list
> gedit-list gnome org
> http://mail.gnome.org/mailman/listinfo/gedit-list
--
Jesse van den Kieboom
Personal: http://www.icecrew.nl
Professional: http://www.novowork.com
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]