I need to build a VteTerminal for GTK3 before I can do the configure bits. These changes are enough though to make ui/gtk.c build with gtk3 though so we might as well do them now.
Signed-off-by: Anthony Liguori <aligu...@us.ibm.com> --- ui/gtk.c | 62 +++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/ui/gtk.c b/ui/gtk.c index b9f0928..d16d1f8 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -191,6 +191,14 @@ static void gd_update_caption(GtkDisplayState *s) g_free(title); } +static void gd_get_size(GtkDisplayState *s, gint *ww, gint *wh) +{ + GdkWindow *window; + window = gtk_widget_get_window(s->drawing_area); + *ww = gdk_window_get_width(window); + *wh = gdk_window_get_height(window); +} + /** DisplayState Callbacks **/ static void gd_update(DisplayState *ds, int x, int y, int w, int h) @@ -212,7 +220,7 @@ static void gd_update(DisplayState *ds, int x, int y, int w, int h) fbw = ds_get_width(s->ds) * s->scale_x; fbh = ds_get_height(s->ds) * s->scale_y; - gdk_drawable_get_size(gtk_widget_get_window(s->drawing_area), &ww, &wh); + gd_get_size(s, &ww, &wh); mx = my = 0; if (ww > fbw) { @@ -366,7 +374,7 @@ static gboolean gd_draw_event(GtkWidget *widget, cairo_t *cr, void *opaque) fbw = ds_get_width(s->ds); fbh = ds_get_height(s->ds); - gdk_drawable_get_size(gtk_widget_get_window(widget), &ww, &wh); + gd_get_size(s, &ww, &wh); if (s->full_screen) { s->scale_x = (double)ww / fbw; @@ -443,7 +451,7 @@ static gboolean gd_motion_event(GtkWidget *widget, GdkEventMotion *motion, fbw = ds_get_width(s->ds) * s->scale_x; fbh = ds_get_height(s->ds) * s->scale_y; - gdk_drawable_get_size(gtk_widget_get_window(s->drawing_area), &ww, &wh); + gd_get_size(s, &ww, &wh); mx = my = 0; if (ww > fbw) { @@ -481,9 +489,8 @@ static gboolean gd_motion_event(GtkWidget *widget, GdkEventMotion *motion, } if (!kbd_mouse_is_absolute() && gd_is_grab_active(s)) { - GdkDrawable *drawable = GDK_DRAWABLE(gtk_widget_get_window(s->drawing_area)); - GdkDisplay *display = gdk_drawable_get_display(drawable); - GdkScreen *screen = gdk_drawable_get_screen(drawable); + GdkDisplay *display = gtk_widget_get_display(s->drawing_area); + GdkScreen *screen = gtk_widget_get_screen(s->drawing_area); int x = (int)motion->x_root; int y = (int)motion->y_root; @@ -733,7 +740,8 @@ static void gd_menu_zoom_fit(GtkMenuItem *item, void *opaque) gd_resize(s->ds); - gdk_drawable_get_size(gtk_widget_get_window(s->drawing_area), &ww, &wh); + gd_get_size(s, &ww, &wh); + gtk_widget_queue_draw_area(s->drawing_area, 0, 0, ww, wh); } @@ -949,7 +957,7 @@ static GSList *gd_vc_init(GtkDisplayState *s, VirtualConsole *vc, int index, GSL g_signal_connect(vc->menu_item, "activate", G_CALLBACK(gd_menu_switch_vc), s); - gtk_menu_append(GTK_MENU(s->view_menu), vc->menu_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), vc->menu_item); qemu_chr_generic_open(vc->chr); if (vc->chr->init) { @@ -1035,26 +1043,26 @@ static void gd_create_menus(GtkDisplayState *s) gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->stop_item), "<QEMU>/Machine/Stop"); gtk_accel_map_add_entry("<QEMU>/Machine/Stop", item.keyval, item.modifier); - gtk_menu_append(GTK_MENU(s->machine_menu), s->stop_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->machine_menu), s->stop_item); separator = gtk_separator_menu_item_new(); - gtk_menu_append(GTK_MENU(s->machine_menu), separator); + gtk_menu_shell_append(GTK_MENU_SHELL(s->machine_menu), separator); s->reset_item = gtk_image_menu_item_new_with_mnemonic(_("_Reset")); - gtk_menu_append(GTK_MENU(s->machine_menu), s->reset_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->machine_menu), s->reset_item); s->powerdown_item = gtk_image_menu_item_new_with_mnemonic(_("_Power Down")); - gtk_menu_append(GTK_MENU(s->machine_menu), s->powerdown_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->machine_menu), s->powerdown_item); separator = gtk_separator_menu_item_new(); - gtk_menu_append(GTK_MENU(s->machine_menu), separator); + gtk_menu_shell_append(GTK_MENU_SHELL(s->machine_menu), separator); s->quit_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL); gtk_stock_lookup(GTK_STOCK_QUIT, &item); gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->quit_item), "<QEMU>/Machine/Quit"); gtk_accel_map_add_entry("<QEMU>/Machine/Quit", item.keyval, item.modifier); - gtk_menu_append(GTK_MENU(s->machine_menu), s->quit_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->machine_menu), s->quit_item); s->view_menu = gtk_menu_new(); gtk_menu_set_accel_group(GTK_MENU(s->view_menu), accel_group); @@ -1064,53 +1072,53 @@ static void gd_create_menus(GtkDisplayState *s) gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->full_screen_item), "<QEMU>/View/Full Screen"); gtk_accel_map_add_entry("<QEMU>/View/Full Screen", GDK_KEY_f, GDK_CONTROL_MASK | GDK_MOD1_MASK); - gtk_menu_append(GTK_MENU(s->view_menu), s->full_screen_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), s->full_screen_item); separator = gtk_separator_menu_item_new(); - gtk_menu_append(GTK_MENU(s->view_menu), separator); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), separator); s->zoom_in_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_IN, NULL); gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->zoom_in_item), "<QEMU>/View/Zoom In"); gtk_accel_map_add_entry("<QEMU>/View/Zoom In", GDK_KEY_plus, GDK_CONTROL_MASK | GDK_MOD1_MASK); - gtk_menu_append(GTK_MENU(s->view_menu), s->zoom_in_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), s->zoom_in_item); s->zoom_out_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_OUT, NULL); gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->zoom_out_item), "<QEMU>/View/Zoom Out"); gtk_accel_map_add_entry("<QEMU>/View/Zoom Out", GDK_KEY_minus, GDK_CONTROL_MASK | GDK_MOD1_MASK); - gtk_menu_append(GTK_MENU(s->view_menu), s->zoom_out_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), s->zoom_out_item); s->zoom_fixed_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_100, NULL); gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->zoom_fixed_item), "<QEMU>/View/Zoom Fixed"); gtk_accel_map_add_entry("<QEMU>/View/Zoom Fixed", GDK_KEY_0, GDK_CONTROL_MASK | GDK_MOD1_MASK); - gtk_menu_append(GTK_MENU(s->view_menu), s->zoom_fixed_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), s->zoom_fixed_item); s->zoom_fit_item = gtk_check_menu_item_new_with_mnemonic(_("Zoom To _Fit")); - gtk_menu_append(GTK_MENU(s->view_menu), s->zoom_fit_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), s->zoom_fit_item); separator = gtk_separator_menu_item_new(); - gtk_menu_append(GTK_MENU(s->view_menu), separator); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), separator); s->grab_on_hover_item = gtk_check_menu_item_new_with_mnemonic(_("Grab On _Hover")); - gtk_menu_append(GTK_MENU(s->view_menu), s->grab_on_hover_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), s->grab_on_hover_item); s->grab_item = gtk_check_menu_item_new_with_mnemonic(_("_Grab Input")); gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->grab_item), "<QEMU>/View/Grab Input"); gtk_accel_map_add_entry("<QEMU>/View/Grab Input", GDK_KEY_g, GDK_CONTROL_MASK | GDK_MOD1_MASK); - gtk_menu_append(GTK_MENU(s->view_menu), s->grab_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), s->grab_item); separator = gtk_separator_menu_item_new(); - gtk_menu_append(GTK_MENU(s->view_menu), separator); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), separator); s->vga_item = gtk_radio_menu_item_new_with_mnemonic(group, "_VGA"); group = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(s->vga_item)); gtk_menu_item_set_accel_path(GTK_MENU_ITEM(s->vga_item), "<QEMU>/View/VGA"); gtk_accel_map_add_entry("<QEMU>/View/VGA", GDK_KEY_1, GDK_CONTROL_MASK | GDK_MOD1_MASK); - gtk_menu_append(GTK_MENU(s->view_menu), s->vga_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), s->vga_item); for (i = 0; i < nb_vcs; i++) { VirtualConsole *vc = &s->vc[i]; @@ -1120,10 +1128,10 @@ static void gd_create_menus(GtkDisplayState *s) } separator = gtk_separator_menu_item_new(); - gtk_menu_append(GTK_MENU(s->view_menu), separator); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), separator); s->show_tabs_item = gtk_check_menu_item_new_with_mnemonic(_("Show _Tabs")); - gtk_menu_append(GTK_MENU(s->view_menu), s->show_tabs_item); + gtk_menu_shell_append(GTK_MENU_SHELL(s->view_menu), s->show_tabs_item); g_object_set_data(G_OBJECT(s->window), "accel_group", accel_group); gtk_window_add_accel_group(GTK_WINDOW(s->window), accel_group); -- 1.8.0