gtk: Fix deprecation warnings, misc bug fixes
v3 cover gtk: Fix deprecation warnings, misc bug fixes
First patch documents a configure option.
Next 3 patches fix deprecation warnings on gtk 3.10. Last patch changes the 'quit' shortcut use the ctrl+alt convention.
v3:
Fix last patch building against old gtk2
Cole Robinson (5):
configure: Document --with-gtkabi
gtk: Don't use deprecated gtk_image_menu_item_new_with_mnemonic
gtk: Don't use deprecated vte_terminal_get_adjustment
gtk: Remove use of deprecated stock items
gtk: Use ctrl+alt+q for quit accelerator
configure | 1 + ui/gtk.c | 25 ++++++++++++++----------- 2 files changed, 15 insertions(+), 11 deletions(-)
Signature · 1 line
1.8.5.3
PATCH v3 1/5 configure: Document --with-gtkabi
--- configure | 1 + 1 file changed, 1 insertion(+)
configure +1 -0
@@ -1219,6 +1219,7 @@ Advanced options (experts only): --with-sdlabi select preferred SDL ABI 1.2 or 2.0 --disable-gtk disable gtk UI --enable-gtk enable gtk UI + --with-gtkabi select preferred GTK ABI 2.0 or 3.0 --disable-virtfs disable VirtFS --enable-virtfs enable VirtFS --disable-vnc disable VNC
Signature · 1 line
1.8.5.3
PATCH v3 2/5 gtk: Don't use deprecated gtk_image_menu_item_new_with_mnemonic
In reply to Cole RobinsonIn these cases we weren't using an image in the menu item anyways, so just do as the suggestion says. Should be fine for all qemu supported gtk versions.
ui/gtk.c: In function ‘gd_create_menu_machine’:ui/gtk.c:1284:5: error: ‘gtk_image_menu_item_new_with_mnemonic’ is deprecated (declared at /usr/include/gtk-3.0/gtk/deprecated/gtkimagemenuitem.h:76): Use 'gtk_menu_item_new_with_mnemonic' instead [-Werror=deprecated-declarations]
s->reset_item = gtk_image_menu_item_new_with_mnemonic(_("_Reset"));
^
ui/gtk.c:1287:5: error: ‘gtk_image_menu_item_new_with_mnemonic’ is deprecated (declared at /usr/include/gtk-3.0/gtk/deprecated/gtkimagemenuitem.h:76): Use 'gtk_menu_item_new_with_mnemonic' instead [-Werror=deprecated-declarations]
s->powerdown_item = gtk_image_menu_item_new_with_mnemonic(_("Power _Down"));--- ui/gtk.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
ui/gtk.c +2 -2
@@ -1312,10 +1312,10 @@ static GtkWidget *gd_create_menu_machine(GtkDisplayState *s, GtkAccelGroup *acce separator =gtk_separator_menu_item_new ();gtk_menu_shell_append (GTK_MENU_SHELL (machine_menu), separator); - s->reset_item =gtk_image_menu_item_new_with_mnemonic (_ ("_Reset" )); + s->reset_item =gtk_menu_item_new_with_mnemonic (_ ("_Reset" ));gtk_menu_shell_append (GTK_MENU_SHELL (machine_menu), s->reset_item); - s->powerdown_item =gtk_image_menu_item_new_with_mnemonic (_ ("Power _Down" )); + s->powerdown_item =gtk_menu_item_new_with_mnemonic (_ ("Power _Down" ));gtk_menu_shell_append (GTK_MENU_SHELL (machine_menu), s->powerdown_item); separator =gtk_separator_menu_item_new ();
Signature · 1 line
1.8.5.3
PATCH v3 3/5 gtk: Don't use deprecated vte_terminal_get_adjustment
In reply to Cole RobinsonGuard this with a VTE version check, since I'm not sure if this is backwards compatible.
ui/gtk.c: In function ‘gd_vc_init’:ui/gtk.c:1176:5: error: ‘vte_terminal_get_adjustment’ is deprecated (declared at /usr/include/vte-2.90/vte/vtedeprecated.h:101) [-Werror=deprecated-declarations]
--- ui/gtk.c | 4 ++++ 1 file changed, 4 insertions(+)
ui/gtk.c +4 -0
@@ -1202,7 +1202,11 @@ static GSList *gd_vc_init(GtkDisplayState *s, VirtualConsole *vc, int index, GSLvte_terminal_set_scrollback_lines (VTE_TERMINAL (vc->terminal),-1 ); +#if VTE_CHECK_VERSION (0 ,28 ,0 ) &>K_CHECK_VERSION (3 ,0 ,0 ) + vadjustment =gtk_scrollable_get_vadjustment (GTK_SCROLLABLE (vc->terminal)); +#else vadjustment =vte_terminal_get_adjustment (VTE_TERMINAL (vc->terminal)); +#endif scrolled_window =gtk_scrolled_window_new (NULL , vadjustment);gtk_container_add (GTK_CONTAINER (scrolled_window), vc->terminal);
Signature · 1 line
1.8.5.3
PATCH v3 4/5 gtk: Remove use of deprecated stock items
In reply to Cole RobinsonStock items are deprecated. As are ImageMenuItems. Convert everything to text only MenuItems, with the same text content as mentioned in the conversion guide:
https://docs.google.com/spreadsheet/pub?key=0AsPAM3pPwxagdGF4THNMMUpjUW5xMXZfdUNzMXhEa2c&output=html
gtk2 users lose their menu icons as well, but I don't think that's enough of a problem to warrant keeping around back compat code.
Example error:
ui/gtk.c:1328:5: error: ‘GtkStock’ is deprecated [-Werror=deprecated-declarations]ui/gtk.c:1335:5: error: ‘gtk_image_menu_item_new_from_stock’ is deprecated (declared at /usr/include/gtk-3.0/gtk/deprecated/gtkimagemenuitem.h:78): Use 'gtk_menu_item_new' instead [-Werror=deprecated-declarations]
s->zoom_out_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ZOOM_OUT, NULL);
--- ui/gtk.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-)
ui/gtk.c +7 -9
@@ -1305,7 +1305,6 @@ static GtkWidget *gd_create_menu_machine(GtkDisplayState *s, GtkAccelGroup *acce {GtkWidget *machine_menu;GtkWidget *separator; -GtkStockItem item; machine_menu =gtk_menu_new ();gtk_menu_set_accel_group (GTK_MENU (machine_menu), accel_group);
@@ -1325,11 +1324,11 @@ static GtkWidget *gd_create_menu_machine(GtkDisplayState *s, GtkAccelGroup *acce separator =gtk_separator_menu_item_new ();gtk_menu_shell_append (GTK_MENU_SHELL (machine_menu), separator); - s->quit_item =gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT ,NULL ); -gtk_stock_lookup (GTK_STOCK_QUIT , &item); + s->quit_item =gtk_menu_item_new_with_mnemonic (_ ("_Quit" ));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_accel_map_add_entry ("<QEMU>/Machine/Quit" , + GDK_KEY_q,GDK_CONTROL_MASK );gtk_menu_shell_append (GTK_MENU_SHELL (machine_menu), s->quit_item);return machine_menu;
@@ -1345,8 +1344,7 @@ static GtkWidget *gd_create_menu_view(GtkDisplayState *s, GtkAccelGroup *accel_g view_menu =gtk_menu_new ();gtk_menu_set_accel_group (GTK_MENU (view_menu), accel_group); - s->full_screen_item = -gtk_image_menu_item_new_from_stock (GTK_STOCK_FULLSCREEN ,NULL ); + s->full_screen_item =gtk_menu_item_new_with_mnemonic (_ ("_Fullscreen" ));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,
@@ -1356,21 +1354,21 @@ static GtkWidget *gd_create_menu_view(GtkDisplayState *s, GtkAccelGroup *accel_g separator =gtk_separator_menu_item_new ();gtk_menu_shell_append (GTK_MENU_SHELL (view_menu), separator); - s->zoom_in_item =gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_IN ,NULL ); + s->zoom_in_item =gtk_menu_item_new_with_mnemonic (_ ("Zoom _In" ));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,HOTKEY_MODIFIERS );gtk_menu_shell_append (GTK_MENU_SHELL (view_menu), s->zoom_in_item); - s->zoom_out_item =gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_OUT ,NULL ); + s->zoom_out_item =gtk_menu_item_new_with_mnemonic (_ ("Zoom _Out" ));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,HOTKEY_MODIFIERS );gtk_menu_shell_append (GTK_MENU_SHELL (view_menu), s->zoom_out_item); - s->zoom_fixed_item =gtk_image_menu_item_new_from_stock (GTK_STOCK_ZOOM_100 ,NULL ); + s->zoom_fixed_item =gtk_menu_item_new_with_mnemonic (_ ("Best _Fit" ));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,
Signature · 1 line
1.8.5.3
PATCH v3 5/5 gtk: Use ctrl+alt+q for quit accelerator
In reply to Cole RobinsonUsing the standard ctrl+q makes it too easy to kill the whole VM. Using ctrl+alt+FOO is consistent with our other accelerators.
https://bugzilla.redhat.com/show_bug.cgi?id=1062393
---
v3:
Fix building with old gtk2
ui/gtk.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
ui/gtk.c +2 -1
@@ -88,6 +88,7 @@ static inline void gdk_drawable_get_size(GdkWindow *w, gint *ww, gint *wh)#define GDK_KEY_2 GDK_2#define GDK_KEY_f GDK_f#define GDK_KEY_g GDK_g +#define GDK_KEY_q GDK_q#define GDK_KEY_plus GDK_plus#define GDK_KEY_minus GDK_minus#endif
@@ -1328,7 +1329,7 @@ static GtkWidget *gd_create_menu_machine(GtkDisplayState *s, GtkAccelGroup *accegtk_menu_item_set_accel_path (GTK_MENU_ITEM (s->quit_item),"<QEMU>/Machine/Quit" );gtk_accel_map_add_entry ("<QEMU>/Machine/Quit" , - GDK_KEY_q,GDK_CONTROL_MASK ); + GDK_KEY_q,HOTKEY_MODIFIERS );gtk_menu_shell_append (GTK_MENU_SHELL (machine_menu), s->quit_item);return machine_menu;
Signature · 1 line
1.8.5.3
Quoted 3 lines · Cole Robinson
First patch documents a configure option.
Next 3 patches fix deprecation warnings on gtk 3.10. Last patch changes the 'quit' shortcut use the ctrl+alt convention.
Queued for 2.1 devel cycle.
thanks,
Gerd