@@ -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);
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 <aliguori@us.ibm.com> --- ui/gtk.c | 62 +++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 35 insertions(+), 27 deletions(-)