From patchwork Fri Feb 22 20:02:21 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anthony Liguori X-Patchwork-Id: 222628 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 203732C02A6 for ; Sat, 23 Feb 2013 07:02:59 +1100 (EST) Received: from localhost ([::1]:54119 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U8ypd-0003vS-Bj for incoming@patchwork.ozlabs.org; Fri, 22 Feb 2013 15:02:57 -0500 Received: from eggs.gnu.org ([208.118.235.92]:35875) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U8ypO-0003sp-Ma for qemu-devel@nongnu.org; Fri, 22 Feb 2013 15:02:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1U8ypL-0002Zk-7p for qemu-devel@nongnu.org; Fri, 22 Feb 2013 15:02:42 -0500 Received: from e23smtp03.au.ibm.com ([202.81.31.145]:35417) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1U8ypK-0002ZY-F0 for qemu-devel@nongnu.org; Fri, 22 Feb 2013 15:02:39 -0500 Received: from /spool/local by e23smtp03.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Sat, 23 Feb 2013 05:56:24 +1000 Received: from d23dlp02.au.ibm.com (202.81.31.213) by e23smtp03.au.ibm.com (202.81.31.209) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Sat, 23 Feb 2013 05:56:22 +1000 Received: from d23relay03.au.ibm.com (d23relay03.au.ibm.com [9.190.235.21]) by d23dlp02.au.ibm.com (Postfix) with ESMTP id DC97B2BB004F for ; Sat, 23 Feb 2013 07:02:25 +1100 (EST) Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r1MK2Ng465470576 for ; Sat, 23 Feb 2013 07:02:23 +1100 Received: from d23av04.au.ibm.com (loopback [127.0.0.1]) by d23av04.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r1MK2Ph2015097 for ; Sat, 23 Feb 2013 07:02:25 +1100 Received: from titi.austin.rr.com (sig-9-65-10-252.mts.ibm.com [9.65.10.252]) by d23av04.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id r1MK2LlP015018; Sat, 23 Feb 2013 07:02:24 +1100 From: Anthony Liguori To: qemu-devel@nongnu.org Date: Fri, 22 Feb 2013 14:02:21 -0600 Message-Id: <1361563341-32163-1-git-send-email-aliguori@us.ibm.com> X-Mailer: git-send-email 1.8.0 X-Content-Scanned: Fidelis XPS MAILER x-cbid: 13022219-6102-0000-0000-0000030C2637 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-Received-From: 202.81.31.145 Cc: Anthony Liguori Subject: [Qemu-devel] [PATCH] ui/gtk: prepare for GTK3 support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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 --- 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), "/Machine/Stop"); gtk_accel_map_add_entry("/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), "/Machine/Quit"); gtk_accel_map_add_entry("/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), "/View/Full Screen"); gtk_accel_map_add_entry("/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), "/View/Zoom In"); gtk_accel_map_add_entry("/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), "/View/Zoom Out"); gtk_accel_map_add_entry("/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), "/View/Zoom Fixed"); gtk_accel_map_add_entry("/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), "/View/Grab Input"); gtk_accel_map_add_entry("/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), "/View/VGA"); gtk_accel_map_add_entry("/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);