void gd_entry_focus_hack (GtkWidget *entry, GdkDevice *device) { GtkEntryClass *entry_class; GtkWidgetClass *entry_parent_class; /* Grab focus will select all the text. We don't want that to happen, so we * call the parent instance and bypass the selection change. This is probably * really non-kosher. */ entry_class = g_type_class_peek (GTK_TYPE_ENTRY); entry_parent_class = g_type_class_peek_parent (entry_class); (entry_parent_class->grab_focus) (entry); /* send focus-in event */ send_focus_change (entry, device, TRUE); }
static void dma_data_view_goto_activate (GtkWidget *menu_item, DmaDataView *view) { GtkWidget *toplevel; GtkWidget *frame; GtkWidget *vbox; GtkWindowGroup *toplevel_group; GtkWindowGroup *goto_window_group; toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view)); toplevel_group = gtk_window_get_group (GTK_WINDOW (toplevel)); goto_window_group = gtk_window_get_group (GTK_WINDOW (view->goto_window)); if (view->goto_window != NULL) { if (toplevel_group) gtk_window_group_add_window (toplevel_group, GTK_WINDOW (view->goto_window)); else if (goto_window_group) gtk_window_group_remove_window (goto_window_group, GTK_WINDOW (view->goto_window)); } else { view->goto_window = gtk_window_new (GTK_WINDOW_POPUP); if (toplevel_group) gtk_window_group_add_window (toplevel_group, GTK_WINDOW (view->goto_window)); gtk_window_set_modal (GTK_WINDOW (view->goto_window), TRUE); g_signal_connect (view->goto_window, "delete_event", G_CALLBACK (dma_data_view_goto_delete_event), view); g_signal_connect (view->goto_window, "key_press_event", G_CALLBACK (dma_data_view_goto_key_press_event), view); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN); gtk_widget_show (frame); gtk_container_add (GTK_CONTAINER (view->goto_window), frame); vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 3); /* add entry */ view->goto_entry = gtk_entry_new (); gtk_entry_set_icon_from_stock (GTK_ENTRY (view->goto_entry), GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_JUMP_TO); gtk_widget_show (view->goto_entry); gtk_container_add (GTK_CONTAINER (vbox), view->goto_entry); gtk_widget_realize (view->goto_entry); } dma_data_view_goto_position_func (view); gtk_entry_set_text (GTK_ENTRY (view->goto_entry), "0x"); gtk_widget_show (view->goto_window); gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view->address), FALSE); gtk_widget_grab_focus (view->goto_entry); send_focus_change (view->goto_entry, TRUE); gtk_editable_set_position (GTK_EDITABLE (view->goto_entry), -1); }