mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/virt-viewer
synced 2025-12-27 23:00:54 +00:00
Added support for desktop scaling with OpenGL
This commit is contained in:
parent
0154dca5b9
commit
cfde34bf4c
57
src/main.c
57
src/main.c
@ -156,6 +156,26 @@ static void viewer_disconnected(GtkWidget *vnc G_GNUC_UNUSED)
|
||||
gtk_main_quit();
|
||||
}
|
||||
|
||||
static void viewer_fullscreen(GtkWidget *menu, GtkWidget *window)
|
||||
{
|
||||
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu))) {
|
||||
gtk_window_fullscreen(GTK_WINDOW(window));
|
||||
} else {
|
||||
gtk_window_unfullscreen(GTK_WINDOW(window));
|
||||
}
|
||||
}
|
||||
|
||||
static void viewer_scalable(GtkWidget *menu, GtkWidget *vnc)
|
||||
{
|
||||
if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu))) {
|
||||
printf("On\n");
|
||||
vnc_display_set_scaling(VNC_DISPLAY(vnc), TRUE);
|
||||
} else {
|
||||
printf("Off\n");
|
||||
vnc_display_set_scaling(VNC_DISPLAY(vnc), FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
static void viewer_send_key(GtkWidget *menu, GtkWidget *vnc)
|
||||
{
|
||||
int i;
|
||||
@ -397,6 +417,30 @@ static GtkWidget *viewer_build_file_menu(VncDisplay *vnc)
|
||||
return file;
|
||||
}
|
||||
|
||||
static GtkWidget *viewer_build_view_menu(VncDisplay *vnc, GtkWidget *window)
|
||||
{
|
||||
GtkWidget *view;
|
||||
GtkWidget *viewmenu;
|
||||
GtkWidget *fullscreen;
|
||||
GtkWidget *scalable;
|
||||
|
||||
view = gtk_menu_item_new_with_mnemonic("_View");
|
||||
|
||||
viewmenu = gtk_menu_new();
|
||||
gtk_menu_item_set_submenu(GTK_MENU_ITEM(view), viewmenu);
|
||||
|
||||
fullscreen = gtk_check_menu_item_new_with_mnemonic("_Fullscreen");
|
||||
gtk_menu_append(GTK_MENU(viewmenu), fullscreen);
|
||||
g_signal_connect(fullscreen, "toggled", GTK_SIGNAL_FUNC(viewer_fullscreen), window);
|
||||
|
||||
scalable = gtk_check_menu_item_new_with_mnemonic("_Scale display");
|
||||
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(scalable), TRUE);
|
||||
gtk_menu_append(GTK_MENU(viewmenu), scalable);
|
||||
g_signal_connect(scalable, "toggled", GTK_SIGNAL_FUNC(viewer_scalable), vnc);
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
static GtkWidget *viewer_build_sendkey_menu(VncDisplay *vnc)
|
||||
{
|
||||
GtkWidget *sendkey;
|
||||
@ -441,20 +485,23 @@ static GtkWidget *viewer_build_help_menu(void)
|
||||
return help;
|
||||
}
|
||||
|
||||
static GtkWidget *viewer_build_menu(VncDisplay *vnc)
|
||||
static GtkWidget *viewer_build_menu(VncDisplay *vnc, GtkWidget *window)
|
||||
{
|
||||
GtkWidget *menubar;
|
||||
GtkWidget *file;
|
||||
GtkWidget *view;
|
||||
GtkWidget *sendkey;
|
||||
GtkWidget *help;
|
||||
|
||||
menubar = gtk_menu_bar_new();
|
||||
|
||||
file = viewer_build_file_menu(vnc);
|
||||
view = viewer_build_view_menu(vnc, window);
|
||||
sendkey = viewer_build_sendkey_menu(vnc);
|
||||
help = viewer_build_help_menu();
|
||||
|
||||
gtk_menu_bar_append(GTK_MENU_BAR(menubar), file);
|
||||
gtk_menu_bar_append(GTK_MENU_BAR(menubar), view);
|
||||
gtk_menu_bar_append(GTK_MENU_BAR(menubar), sendkey);
|
||||
gtk_menu_bar_append(GTK_MENU_BAR(menubar), help);
|
||||
|
||||
@ -477,13 +524,14 @@ static GtkWidget *viewer_build_window(VncDisplay *vnc,
|
||||
* In both cases they are GTK_CONTAINERs and NOT resizable.
|
||||
*/
|
||||
window = get_toplevel (data);
|
||||
gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
|
||||
|
||||
if (with_menubar) {
|
||||
layout = gtk_vbox_new(FALSE, 3);
|
||||
menubar = viewer_build_menu(vnc);
|
||||
menubar = viewer_build_menu(vnc, window);
|
||||
gtk_container_add(GTK_CONTAINER(window), layout);
|
||||
gtk_container_add(GTK_CONTAINER(layout), menubar);
|
||||
gtk_container_add(GTK_CONTAINER(layout), GTK_WIDGET(vnc));
|
||||
gtk_container_add_with_properties(GTK_CONTAINER(layout), menubar, "expand", FALSE, NULL);
|
||||
gtk_container_add_with_properties(GTK_CONTAINER(layout), GTK_WIDGET(vnc), "expand", TRUE, NULL);
|
||||
} else
|
||||
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(vnc));
|
||||
|
||||
@ -795,6 +843,7 @@ viewer_start (const char *uri, const char *name,
|
||||
|
||||
vnc_display_set_keyboard_grab(VNC_DISPLAY(vnc), TRUE);
|
||||
vnc_display_set_pointer_grab(VNC_DISPLAY(vnc), TRUE);
|
||||
vnc_display_set_scaling(VNC_DISPLAY(vnc), TRUE);
|
||||
|
||||
if (fd >= 0)
|
||||
vnc_display_open_fd(VNC_DISPLAY(vnc), fd);
|
||||
|
||||
@ -6,15 +6,16 @@ Release: 1%{?dist}%{?extra_release}
|
||||
Summary: Virtual Machine Viewer
|
||||
|
||||
Group: Applications/System
|
||||
License: GPL
|
||||
License: GPLv2+
|
||||
URL: http://virt-manager.org/
|
||||
Source0: http://virt-manager.org/download/sources/%{name}/%{name}-%{version}.tar.gz
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
Requires: openssh-clients
|
||||
|
||||
BuildRequires: gtk2-devel
|
||||
BuildRequires: libvirt-devel
|
||||
BuildRequires: libxml2-devel
|
||||
BuildRequires: gtk-vnc-devel >= 0.1.0
|
||||
BuildRequires: gtk-vnc-devel >= 0.3.4
|
||||
BuildRequires: /usr/bin/pod2man
|
||||
|
||||
%description
|
||||
@ -27,12 +28,12 @@ and libvirt for looking up VNC server details.
|
||||
|
||||
%build
|
||||
%configure
|
||||
make %{?_smp_mflags}
|
||||
%__make %{?_smp_mflags}
|
||||
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
make install DESTDIR=$RPM_BUILD_ROOT
|
||||
%__make install DESTDIR=$RPM_BUILD_ROOT
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
Loading…
Reference in New Issue
Block a user