diff options
author | Peter Maydell | 2021-05-21 15:27:56 +0200 |
---|---|---|
committer | Peter Maydell | 2021-05-21 15:27:56 +0200 |
commit | 3bbaed2cd0a02ee53958d3d2585e837bcf327278 (patch) | |
tree | 5aa2fb8262bc53f817d6aab6f4a9947ddcf1db40 /include/ui/gtk.h | |
parent | Merge remote-tracking branch 'remotes/vsementsov/tags/pull-simplebench-2021-0... (diff) | |
parent | ui/gtk: add clipboard support (diff) | |
download | qemu-3bbaed2cd0a02ee53958d3d2585e837bcf327278.tar.gz qemu-3bbaed2cd0a02ee53958d3d2585e837bcf327278.tar.xz qemu-3bbaed2cd0a02ee53958d3d2585e837bcf327278.zip |
Merge remote-tracking branch 'remotes/kraxel/tags/ui-20210521-pull-request' into staging
ui: add cut+paste support.
ui: bugfixes for spice and vnc.
# gpg: Signature made Fri 21 May 2021 13:50:46 BST
# gpg: using RSA key A0328CFFB93A17A79901FE7D4CB6D8EED3E87138
# gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full]
# gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" [full]
# gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full]
# Primary key fingerprint: A032 8CFF B93A 17A7 9901 FE7D 4CB6 D8EE D3E8 7138
* remotes/kraxel/tags/ui-20210521-pull-request:
ui/gtk: add clipboard support
ui/gtk: move struct GtkDisplayState to ui/gtk.h
ui/vnc: clipboard support
ui/vdagent: add clipboard support
ui/vdagent: add mouse support
ui/vdagent: core infrastructure
ui: add clipboard documentation
ui: add clipboard infrastructure
build: add separate spice-protocol config option
ui/spice-display: check NULL pointer in interface_release_resource()
vnc: spelling fix (enable->enabled)
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include/ui/gtk.h')
-rw-r--r-- | include/ui/gtk.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/include/ui/gtk.h b/include/ui/gtk.h index 5ae0ad60a6..9516670ebc 100644 --- a/include/ui/gtk.h +++ b/include/ui/gtk.h @@ -18,12 +18,16 @@ #include <gdk/gdkwayland.h> #endif +#include "ui/clipboard.h" +#include "ui/console.h" #include "ui/kbd-state.h" #if defined(CONFIG_OPENGL) #include "ui/egl-helpers.h" #include "ui/egl-context.h" #endif +#define MAX_VCS 10 + typedef struct GtkDisplayState GtkDisplayState; typedef struct VirtualGfxConsole { @@ -83,6 +87,66 @@ typedef struct VirtualConsole { }; } VirtualConsole; +struct GtkDisplayState { + GtkWidget *window; + + GtkWidget *menu_bar; + + GtkAccelGroup *accel_group; + + GtkWidget *machine_menu_item; + GtkWidget *machine_menu; + GtkWidget *pause_item; + GtkWidget *reset_item; + GtkWidget *powerdown_item; + GtkWidget *quit_item; + + GtkWidget *view_menu_item; + GtkWidget *view_menu; + GtkWidget *full_screen_item; + GtkWidget *copy_item; + GtkWidget *zoom_in_item; + GtkWidget *zoom_out_item; + GtkWidget *zoom_fixed_item; + GtkWidget *zoom_fit_item; + GtkWidget *grab_item; + GtkWidget *grab_on_hover_item; + + int nb_vcs; + VirtualConsole vc[MAX_VCS]; + + GtkWidget *show_tabs_item; + GtkWidget *untabify_item; + GtkWidget *show_menubar_item; + + GtkWidget *vbox; + GtkWidget *notebook; + int button_mask; + gboolean last_set; + int last_x; + int last_y; + int grab_x_root; + int grab_y_root; + VirtualConsole *kbd_owner; + VirtualConsole *ptr_owner; + + gboolean full_screen; + + GdkCursor *null_cursor; + Notifier mouse_mode_notifier; + gboolean free_scale; + + bool external_pause_update; + + QemuClipboardPeer cbpeer; + QemuClipboardInfo *cbinfo[QEMU_CLIPBOARD_SELECTION__COUNT]; + uint32_t cbpending[QEMU_CLIPBOARD_SELECTION__COUNT]; + GtkClipboard *gtkcb[QEMU_CLIPBOARD_SELECTION__COUNT]; + bool cbowner[QEMU_CLIPBOARD_SELECTION__COUNT]; + + DisplayOptions *opts; +}; + extern bool gtk_use_gl_area; /* ui/gtk.c */ @@ -150,4 +214,7 @@ void gtk_gl_area_init(void); int gd_gl_area_make_current(DisplayChangeListener *dcl, QEMUGLContext ctx); +/* gtk-clipboard.c */ +void gd_clipboard_init(GtkDisplayState *gd); + #endif /* UI_GTK_H */ |