summaryrefslogtreecommitdiffstats
path: root/ui/gtk.c
Commit message (Collapse)AuthorAgeFilesLines
* gtk: update mouse position in mouse_set()Gerd Hoffmann2015-05-061-0/+2
| | | | | | | | Without that the next mouse motion event uses the old position as base for relative move calculation, giving wrong results and making your mouse pointer jump around. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: create gtk.hGerd Hoffmann2015-05-061-71/+2
| | | | | | Move various gtk bits (includes, data structures) to a header file. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: add ui_info supportGerd Hoffmann2015-05-061-0/+19
| | | | | | Pass new display size to the guest after window resizes. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: Avoid accel key leakage into guest on console switchJan Kiszka2015-04-271-0/+12
| | | | | | | | | | GTK2 sends the accel key to the guest when switching to the graphic console via that shortcut. Resolve this by ignoring any keys until the next key-release event. However, do not ignore keys when switching via the menu or when on GTK3. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: Fix VTE focus grabbingJan Kiszka2015-04-271-3/+4
| | | | | | | | | | | | | At least on GTK2, the VTE terminal has to be specified as target of gtk_widget_grab_focus. Otherwise, switching from one VTE terminal to another causes the focus to get lost. CC: John Snow <jsnow@redhat.com> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> [ kraxel: fixed build with CONFIG_VTE=n ] Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* console/gtk: add qemu_console_get_labelGerd Hoffmann2015-04-221-11/+1
| | | | | | | Add a new function to get a nice label for a given QemuConsole. Drop the labeling code in gtk.c and use the new function instead. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: bind to text terminal consoles tooGerd Hoffmann2015-04-221-36/+73
| | | | | | | This way gtk has text terminal consoles even when building without vte. Most notably you'll get a monitor tab on windows now. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: handle switch_surface(NULL) properlyGerd Hoffmann2015-04-221-5/+21
| | | | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: do not call gtk_widget_get_window if drawing area is not initializedHervé Poussineau2015-03-261-0/+12
| | | | | | | This prevents gtk_widget_get_window to return a NULL pointer. Signed-off-by: Hervé Poussineau <hpoussin@reactos.org> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* ui/gtk: Support shared surface for most pixman formatsBenjamin Herrenschmidt2015-01-191-6/+7
| | | | | | | | | | | At least all the ones I've tested. We make the assumption that pixman is going to be better at conversion than we are. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> [ kraxel: just hook up qemu_pixman_check_format ] Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: Don't crash if -nodefaultsFam Zheng2014-11-211-7/+9
| | | | | | | | | | | This fixes a crash by just skipping the vte resize hack if cur is NULL. Reproducer: qemu-system-x86_64 -nodefaults Signed-off-by: Fam Zheng <famz@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: fix possible memory leak about local_errzhanghailiang2014-11-211-2/+1
| | | | | | | | local_err in gd_vc_gfx_init() is not freed, and we don't use it, so remove it. Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: add GDK_KEY_pause #defineGerd Hoffmann2014-11-041-0/+1
| | | | | | | Add pause key to the list of compatibility defines. Fixes the build with older gtk versions. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: Hide the menubar when in fullscreen mode (lp 1294898)Cole Robinson2014-11-041-2/+2
| | | | | | | | | | | | | | | | | | | In fullscreen mode, we attempt to shrink the menubar to 1 pixel in height, so it takes up as little room as possible while still allowing us to use the keyboard shortcuts for its various operations. However this shrinking is disregarded on gtk3, so the entire menu bar is visible, which isn't very pleasant. This patch hides the menu bar instead. The side effect is that the only keyboard shortcuts that will work in this mode are the ones that we explicitly register on the top level window and not the menu bar. The previous patches changed the fullscreen and vc shortcuts to work like that, which I think are the only ones that really matter in for the fullscreen case. https://bugs.launchpad.net/qemu/+bug/1294898 Signed-off-by: Cole Robinson <crobinso@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: Install vc accelerators on parent windowCole Robinson2014-11-041-7/+15
| | | | | | | | | So they are usable when we hide the menubar in upcoming patches. This has the accelerator text caveat as the fullscreen bit in the previous patch. Signed-off-by: Cole Robinson <crobinso@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: Install fullscreen accelerator on toplevel windowCole Robinson2014-11-041-4/+14
| | | | | | | | | | | | | | Instead of installing it on the menu. This will be needed to keep the fullscreen keyboard shortcut working when we hide the menu (in future patches). On gtk < 3.8, this has the unfortunate side effect of no longer listing the key combo in the UI. We could manually change the label in that case, but it will look visually out of place, and I'm not sure if anyone really cares. Signed-off-by: Cole Robinson <crobinso@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: Grab accel_group from GtkDisplayStateCole Robinson2014-11-041-12/+9
| | | | | | | Rather than needlessly pass it around Signed-off-by: Cole Robinson <crobinso@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: avoid gd_widget_reparent with gtk 3.14+Gerd Hoffmann2014-10-281-2/+11
| | | | | | gtk_widget_reparent is depricated in gtk 3.14, stop using it. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: drop gtk_widget_set_double_buffered callGerd Hoffmann2014-10-281-1/+0
| | | | | | | | | | Dunno why it is here. Removing it seems to have no ill side effects. It is depricated in 3.14+. In some cases it has no effect since 3.10 according to the docs: https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-set-double-buffered Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: add support for the Pause keyMartin Decky2014-10-151-0/+6
| | | | | | | | Special handing of the Pause key. Implemented in a similar way as in ui/sdl.c. Signed-off-by: Martin Decky <martin@decky.cz> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk.c: Fix memory leak in gd_set_keycode_type()Chen Fan2014-10-151-0/+7
| | | | | | | | | | | | | | | | this memory leak is introduced by the original commit 3158a3482b0093e41f2b2596fba50774ea31ae08 valgrind out showing: ==14553== 21,459 (72 direct, 21,387 indirect) bytes in 1 blocks are definitely lost in loss record 8,055 of 8,082 ==14553== at 0x4A06BC3: calloc (vg_replace_malloc.c:618) ==14553== by 0x80DBFBC: XkbGetKeyboardByName (in /usr/lib64/libX11.so.6.3.0) ==14553== by 0x40C704: gtk_display_init (gtk.c:1798) ==14553== by 0x1AEDC1: main (vl.c:4480) Signed-off-by: Chen Fan <chen.fan.fnst@cn.fujitsu.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* ui/gtk: Restore keyboard focus after Page changeJohn Snow2014-07-111-3/+6
| | | | | | | | | | | | | | | | | | | (Resending for correct email addresses via MAINTAINERS ...) In the GTK UI, after changing focus to the qemu monitor Notebook Page, when restoring focus to the virtual machine page, the keyboard focus is lost to a hidden GTK widget. Focus can only be restored to the virtual machine by pressing "tab" or any of the four directional arrow keys. Clicking in the window or grabbing/ungrabbing input does not restore keyboard focus to the child widget. This patch adjusts the Notebook page switching callback to automatically steal keyboard focus on the Page switch event, so that keyboard input does not appear to break or disappear after tabbing to the QEMU monitor. Signed-off-by: John Snow <jsnow@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: update window size after showing/hiding tabsGerd Hoffmann2014-06-111-0/+2
| | | | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: factor out gtk3 grab into the new gd_grab_devices functionGerd Hoffmann2014-06-111-64/+36
| | | | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: cleanup backend dependenciesGerd Hoffmann2014-06-111-28/+42
| | | | | | | | | | | | | | Make configure detect gtk x11 backend and link libX11 then. Make gtk backend specific code properly #ifdef'ed on the GTK_WINDOWING_* backends at runtime). Our gtk ui code should build and run fine on any platform now. This also fixes the linker failute due to the new XkbGetKeyboard call added by commit 3158a3482b0093e41f2b2596fba50774ea31ae08. Cc: Richard Henderson <rth@twiddle.net> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
* gtk: factor out keycode mappingGerd Hoffmann2014-06-111-7/+16
| | | | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: workaround gtk2 vte resize issueGerd Hoffmann2014-05-261-0/+40
| | | | | | | Hack isn't pretty, but gets the job done. See source code comment for details. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: window sizing overhaulGerd Hoffmann2014-05-261-30/+70
| | | | | | | | | | | Major overhaul for window size handling. This basically switches qemu over to use geometry hints for the window manager instead of trying to get the job done with widget resize requests. This allows to specify better what we need and also avoids window resizes. FIXME: on gtk2 someone overwrites the geometry hints :( Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: zap unused global_stateGerd Hoffmann2014-05-261-4/+0
| | | | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: Add handling for the xfree86 keycodesBruce Rogers2014-05-261-1/+35
| | | | | | | | | Currently only evdev keycodes are handled by the gtk-ui. SDL has code to handle both. This patch adds similar processing so that both keycode types will be handled via the gtk-ui. Signed-off-by: Bruce Rogers <brogers@suse.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: enable untabify for gfxGerd Hoffmann2014-05-261-3/+7
| | | | | | | Now we have all grab fixes in place, so we can allow detaching graphic display tabs too. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: detached window pointer grabsGerd Hoffmann2014-05-261-3/+21
| | | | | | | Make ungrab hotkey work with detached windows. Enable pointer grabs for detached windows. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: update all windows on mouse mode changesGerd Hoffmann2014-05-261-1/+5
| | | | | | We might have multiple graphic displays now which all need a cursor update. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: fix grab checksGerd Hoffmann2014-05-261-12/+23
| | | | | | Make it handle multiple windows case correctly. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: update gd_update_captionGerd Hoffmann2014-05-261-17/+28
| | | | | | Adapt to recent changes, handle multiple windows. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: skip keyboard grab when hover autograb is activeGerd Hoffmann2014-05-261-1/+3
| | | | | | | It's pointless. With grab on hover enabled the keyboard grab is already active when you press Ctrl-Alt-G ;) Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: keep track of grab ownerGerd Hoffmann2014-05-261-5/+23
| | | | | | Simplifies grab state tracking and makes ungrab more reliable. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: add gd_grab trace eventGerd Hoffmann2014-05-261-0/+4
| | | | | | Input grab code is tricky, add some debug & trouble shooting aid. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: add tab to trace eventsGerd Hoffmann2014-05-261-3/+3
| | | | | | So you can see which of multiple displays (if present) was resized ;) Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: allow moving tabs to windows and back.Gerd Hoffmann2014-05-261-11/+63
| | | | | | | | | | | | "View->Detach tab" will move to tab to a new window. Simply closing the window will move it back into a notebook tab. The label will be permamently stored in VirtualConsole->label, so it can easily be reused to (re-)label tabs and windows. Works for vte tabs only for now. pointer/kbd grab code needs adaptions before we can enable it for gfx tabs too. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: simplify resizeGerd Hoffmann2014-05-261-26/+14
| | | | | | | | Simply ask for a small window size. When the widgets don't fit in gtk will automatically make the window large enougth to make things fit, no need to try (and fail) duplicate that logic in qemu. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: use device type as labelGerd Hoffmann2014-05-261-2/+12
| | | | | | | IMO useful than showing VGA for any graphic device even in case it is something completely different. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: support multiple gfx displaysGerd Hoffmann2014-05-261-37/+43
| | | | | | | | | Each display gets its own tab. Tab switching continues to work like it did, just the hotkeys of the vte consoles changes in case a secondary display is present as it will get ctrl-alt-2 assigned and the vtes are shifted by one. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: move vga state into VirtualGfxConsoleGerd Hoffmann2014-05-261-278/+337
| | | | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: VirtualConsole restructionGerd Hoffmann2014-05-261-46/+73
| | | | | | Move all vte-related items into VirtualVteConsole substruct. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: remove page numbering assumtions from the codeGerd Hoffmann2014-05-261-10/+30
| | | | | | Lookup page numbers using gtk_notebook_page_num() instead. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: Add a scrollbar for text consolesCole Robinson2014-05-261-2/+40
| | | | | | | | | Only show the scrollbar if the content doesn't fit on the visible space. [ kraxel: fix box packing ] Signed-off-by: Cole Robinson <crobinso@redhat.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: cleanup CONFIG_VTE ifdef a bit.Gerd Hoffmann2014-05-261-19/+26
| | | | Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: zap vte size requestsGerd Hoffmann2014-05-261-14/+0
| | | | | | | | | | The vte tabs simply get the size of the vga tab then, with whatever cols and lines are fitting in. I find this bahavior more useful than resizing the qemu window all day long. YMMV. Comments are welcome. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
* gtk: zap scrolled_windowGerd Hoffmann2014-05-261-17/+2
| | | | | | | | The vte widget implements the scrollable interface, placing it into a scrolled window is pointless and creates a bunch of strange effects. Zap it. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
OpenPOWER on IntegriCloud