xfreerdp: fix window hiding

This commit is contained in:
Marc-André Moreau 2011-08-23 15:52:17 -04:00
parent 7dcb87d7a3
commit 42f27293a8
4 changed files with 21 additions and 9 deletions

View File

@ -18,16 +18,13 @@
*/
#include <X11/Xutil.h>
#include <X11/Xatom.h>
#include <X11/extensions/shape.h>
#include "xf_window.h"
/* Extended Window Manager Hints: http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html */
#ifndef XA_CARDINAL
#define XA_CARDINAL 6
#endif
#define MWM_HINTS_DECORATIONS (1L << 1)
#define PROP_MOTIF_WM_HINTS_ELEMENTS 5
@ -343,12 +340,10 @@ void xf_MoveWindow(xfInfo* xfi, xfWindow* window, int x, int y, int width, int h
void xf_ShowWindow(xfInfo* xfi, xfWindow* window, uint8 state)
{
//printf("xf_ShowWindow:%d\n", state);
switch (state)
{
case WINDOW_HIDE:
//XIconifyWindow(xfi->display, window->handle, xfi->screen_number);
XWithdrawWindow(xfi->display, window->handle, xfi->screen_number);
break;
case WINDOW_SHOW_MINIMIZED:
@ -360,7 +355,7 @@ void xf_ShowWindow(xfInfo* xfi, xfWindow* window, uint8 state)
break;
case WINDOW_SHOW:
XRaiseWindow(xfi->display, window->handle);
XMapWindow(xfi->display, window->handle);
break;
}

View File

@ -205,7 +205,7 @@ boolean xf_pre_connect(freerdp* instance)
if (settings->workarea)
{
settings->monitors[n].x = screen_info[n].x_org;
settings->monitors[n].y = xfi->workArea.y;
settings->monitors[n].y = screen_info[n].y_org;
settings->monitors[n].width = screen_info[n].width;
settings->monitors[n].height = xfi->workArea.height;
}

View File

@ -103,6 +103,20 @@ static void rail_NotifyIconDelete(rdpUpdate* update, WINDOW_ORDER_INFO* orderInf
printf("NotifyIconDelete\n");
}
static void rail_MonitoredDesktop(rdpUpdate* update, WINDOW_ORDER_INFO* orderInfo, MONITORED_DESKTOP_ORDER* monitored_desktop)
{
rdpRail* rail;
rail = (rdpRail*) update->rail;
printf("MonitoredDesktop\n");
}
static void rail_NonMonitoredDesktop(rdpUpdate* update, WINDOW_ORDER_INFO* orderInfo)
{
rdpRail* rail;
rail = (rdpRail*) update->rail;
printf("NonMonitoredDesktop\n");
}
void rail_register_update_callbacks(rdpRail* rail, rdpUpdate* update)
{
update->WindowCreate = rail_WindowCreate;
@ -113,6 +127,8 @@ void rail_register_update_callbacks(rdpRail* rail, rdpUpdate* update)
update->NotifyIconCreate = rail_NotifyIconCreate;
update->NotifyIconUpdate = rail_NotifyIconUpdate;
update->NotifyIconDelete = rail_NotifyIconDelete;
update->MonitoredDesktop = rail_MonitoredDesktop;
update->NonMonitoredDesktop = rail_NonMonitoredDesktop;
}
rdpRail* rail_new(rdpSettings* settings)

View File

@ -219,6 +219,7 @@ int freerdp_parse_args(rdpSettings* settings, int argc, char** argv,
settings->remote_app = True;
settings->rail_langbar_supported = True;
settings->workarea = True;
settings->performance_flags = PERF_DISABLE_WALLPAPER | PERF_DISABLE_FULLWINDOWDRAG;
}
else if (strcmp("-x", argv[index]) == 0)
{