diff mbox

gtk: Add show_tabs=on|off command line option.

Message ID 56D0203F.5060303@gmail.com
State New
Headers show

Commit Message

Igor S Feb. 26, 2016, 9:51 a.m. UTC
The patch adds "show_tabs" command line option for GTK ui similar to "grab_on_hover". This option allows tabbed view mode to not have to be enabled by hand at each start of the VM.

Signed-off-by: Igor Sudarikov <4seev3@gmail.com>
---
 include/ui/console.h |  2 +-
 qemu-options.hx      |  2 +-
 ui/gtk.c             |  5 ++++-
 vl.c                 | 12 +++++++++++-
 4 files changed, 17 insertions(+), 4 deletions(-)

Comments

Felix Queißner June 23, 2022, 2:36 p.m. UTC | #1
Heya!

> The patch adds "show_tabs" command line option for GTK ui similar to "grab_on_hover". This option allows tabbed view mode to not have to be enabled by hand at each start of the VM.

It's been a while now, but i was always missing this feature in QEMU and 
i'd love to see that patch land in QEMU one day.

I discovered that patch by searching for "start qemu with tabs visible" 
and found this link:

https://patchwork.ozlabs.org/project/qemu-devel/patch/56D0203F.5060303@gmail.com/

Regards
- Felix
Thomas Huth June 23, 2022, 2:59 p.m. UTC | #2
On 23/06/2022 16.36, Felix Queißner wrote:
> Heya!
> 
>> The patch adds "show_tabs" command line option for GTK ui similar to 
>> "grab_on_hover". This option allows tabbed view mode to not have to be 
>> enabled by hand at each start of the VM.
> 
> It's been a while now, but i was always missing this feature in QEMU and i'd 
> love to see that patch land in QEMU one day.
> 
> I discovered that patch by searching for "start qemu with tabs visible" and 
> found this link:
> 
> https://patchwork.ozlabs.org/project/qemu-devel/patch/56D0203F.5060303@gmail.com/ 

Not sure why it was

That patch certainly needs a re-spin since it won't apply as-is anymore. 
Want to have a try?

  Thomas
Thomas Huth June 23, 2022, 3 p.m. UTC | #3
On 23/06/2022 16.59, Thomas Huth wrote:
> On 23/06/2022 16.36, Felix Queißner wrote:
>> Heya!
>>
>>> The patch adds "show_tabs" command line option for GTK ui similar to 
>>> "grab_on_hover". This option allows tabbed view mode to not have to be 
>>> enabled by hand at each start of the VM.
>>
>> It's been a while now, but i was always missing this feature in QEMU and 
>> i'd love to see that patch land in QEMU one day.
>>
>> I discovered that patch by searching for "start qemu with tabs visible" 
>> and found this link:
>>
>> https://patchwork.ozlabs.org/project/qemu-devel/patch/56D0203F.5060303@gmail.com/ 
> 
> 
> Not sure why it was

I wanted to say: "Not sure why it was never picked up"... sorry, I hit the 
send button by accident too early.

  Thomas
Felix Queißner June 23, 2022, 3:05 p.m. UTC | #4
> Not sure why it was never picked up
> 
> That patch certainly needs a re-spin since it won't apply as-is anymore. 
> Want to have a try?

I guess the semantics of the code stay the same, but the boilerplate 
might change a bit?

If so, i guess i can give it a try tomorrow and see if i can make it work.

- Felix
Thomas Huth June 23, 2022, 3:18 p.m. UTC | #5
On 23/06/2022 17.05, Felix Queißner wrote:
> 
>> Not sure why it was never picked up
>>
>> That patch certainly needs a re-spin since it won't apply as-is anymore. 
>> Want to have a try?
> 
> I guess the semantics of the code stay the same, but the boilerplate might 
> change a bit?
> 
> If so, i guess i can give it a try tomorrow and see if i can make it work.

The part that affects vl.c has changed completely - you now have to declare 
it in the "QAPI schema" in the file qapi/ui.json instead (and it has to use 
"-" instead of "_" now).

Just have a look how grab_on_hover is handled nowadays, then you'll should 
be able to figure it out, I think.

  HTH,
   Thomas
diff mbox

Patch

diff --git a/include/ui/console.h b/include/ui/console.h
index 6631b96..71132aa 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -453,6 +453,6 @@  int index_from_key(const char *key, size_t key_length);
 
 /* gtk.c */
 void early_gtk_display_init(int opengl);
-void gtk_display_init(DisplayState *ds, bool full_screen, bool grab_on_hover);
+void gtk_display_init(DisplayState *ds, bool full_screen, bool grab_on_hover, bool show_tabs);
 
 #endif
diff --git a/qemu-options.hx b/qemu-options.hx
index f528405..1c2e9ae 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -930,7 +930,7 @@  ETEXI
 DEF("display", HAS_ARG, QEMU_OPTION_display,
     "-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off]\n"
     "            [,window_close=on|off]|curses|none|\n"
-    "            gtk[,grab_on_hover=on|off]|\n"
+    "            gtk[,grab_on_hover=on|off][,show_tabs=on|off]|\n"
     "            vnc=<display>[,<optargs>]\n"
     "                select display type\n", QEMU_ARCH_ALL)
 STEXI
diff --git a/ui/gtk.c b/ui/gtk.c
index 3773826..8800eca 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -2071,7 +2071,7 @@  static void gd_set_keycode_type(GtkDisplayState *s)
 
 static gboolean gtkinit;
 
-void gtk_display_init(DisplayState *ds, bool full_screen, bool grab_on_hover)
+void gtk_display_init(DisplayState *ds, bool full_screen, bool grab_on_hover, bool show_tabs)
 {
     GtkDisplayState *s = g_malloc0(sizeof(*s));
     char *filename;
@@ -2157,6 +2157,9 @@  void gtk_display_init(DisplayState *ds, bool full_screen, bool grab_on_hover)
     if (grab_on_hover) {
         gtk_menu_item_activate(GTK_MENU_ITEM(s->grab_on_hover_item));
     }
+    if (show_tabs) {
+        gtk_menu_item_activate(GTK_MENU_ITEM(s->show_tabs_item));
+    }
 
     gd_set_keycode_type(s);
 }
diff --git a/vl.c b/vl.c
index b87e292..e553611 100644
--- a/vl.c
+++ b/vl.c
@@ -146,6 +146,7 @@  static int no_frame = 0;
 int no_quit = 0;
 #ifdef CONFIG_GTK
 static bool grab_on_hover;
+static bool show_tabs;
 #endif
 CharDriverState *serial_hds[MAX_SERIAL_PORTS];
 CharDriverState *parallel_hds[MAX_PARALLEL_PORTS];
@@ -2194,6 +2195,15 @@  static DisplayType select_display(const char *p)
                 } else {
                     goto invalid_gtk_args;
                 }
+            } else if (strstart(opts, ",show_tabs=", &nextopt)) {
+                opts = nextopt;
+                if (strstart(opts, "on", &nextopt)) {
+                    show_tabs = true;
+                } else if (strstart(opts, "off", &nextopt)) {
+                    show_tabs = false;
+                } else {
+                    goto invalid_gtk_args;
+                }
             } else if (strstart(opts, ",gl=", &nextopt)) {
                 opts = nextopt;
                 if (strstart(opts, "on", &nextopt)) {
@@ -4567,7 +4577,7 @@  int main(int argc, char **argv, char **envp)
 #endif
 #if defined(CONFIG_GTK)
     case DT_GTK:
-        gtk_display_init(ds, full_screen, grab_on_hover);
+        gtk_display_init(ds, full_screen, grab_on_hover, show_tabs);
         break;
 #endif
     default: