* x11_api.cpp: Various x11-specific functions
*****************************************************************************
* Copyright (C) 2003 VideoLAN
- * $Id: x11_api.cpp,v 1.2 2003/05/19 21:39:34 asmax Exp $
+ * $Id: x11_api.cpp,v 1.3 2003/05/28 23:56:51 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
//--- SKIN ------------------------------------------------------------------
#include <vlc/intf.h>
#include "../src/skin_common.h"
+#include "../src/theme.h"
#include "../src/window.h"
#include "../os_window.h"
#include "../os_api.h"
long param2 )
{
XEvent event;
-
+
event.type = ClientMessage;
event.xclient.display = g_pIntf->p_sys->display;
- if( win == NULL )
- event.xclient.window = NULL;
- else
- event.xclient.window = (( X11Window *)win)->GetHandle();
event.xclient.send_event = 0;
event.xclient.message_type = NULL;
event.xclient.format = 32;
event.xclient.data.l[0] = message;
event.xclient.data.l[1] = param1;
event.xclient.data.l[2] = param2;
- XSendEvent( g_pIntf->p_sys->display, event.xclient.window, False, 0, &event );
+
+ if( win == NULL )
+ {
+ // broadcast message
+ list<SkinWindow *>::const_iterator w;
+ for( w = g_pIntf->p_sys->p_theme->WindowList.begin();
+ w != g_pIntf->p_sys->p_theme->WindowList.end(); w++ )
+ {
+ event.xclient.window = (( X11Window *)*w)->GetHandle();
+ XSendEvent( g_pIntf->p_sys->display, event.xclient.window, False, 0, &event );
+ }
+ }
+ else
+ {
+ event.xclient.window = (( X11Window *)win)->GetHandle();
+ XSendEvent( g_pIntf->p_sys->display, event.xclient.window, False, 0, &event );
+ }
}
//---------------------------------------------------------------------------
* x11_run.cpp:
*****************************************************************************
* Copyright (C) 2003 VideoLAN
- * $Id: x11_run.cpp,v 1.9 2003/05/26 02:09:27 gbazin Exp $
+ * $Id: x11_run.cpp,v 1.10 2003/05/28 23:56:51 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
// Create event to dispatch in windows
// Skin event
-
if( event->type == ClientMessage )
{
msg = ( (XClientMessageEvent *)event )->data.l[0];
return; // Exit VLC !
}
}
- else if( wnd == NULL )
- {
- for( win = p_intf->p_sys->p_theme->WindowList.begin();
- win != p_intf->p_sys->p_theme->WindowList.end(); win++ )
- {
- (*win)->ProcessEvent( evt );
- }
- }
else
{
// Find window matching with gwnd
* x11_theme.cpp: X11 implementation of the Theme class
*****************************************************************************
* Copyright (C) 2003 VideoLAN
- * $Id: x11_theme.cpp,v 1.4 2003/05/24 21:28:29 asmax Exp $
+ * $Id: x11_theme.cpp,v 1.5 2003/05/28 23:56:51 asmax Exp $
*
* Authors: Cyril Deguet <asmax@videolan.org>
*
// Create the window
Window root = DefaultRootWindow( display );
- Window wnd = XCreateSimpleWindow( display, root, 0, 0, 1, 1, 0, 0, 0 );
- XSelectInput( display, wnd, ExposureMask|
+ XSetWindowAttributes attr;
+ attr.override_redirect = True;
+ Window wnd = XCreateWindow( display, root, 0, 0, 1, 1, 0, 0, InputOutput,
+ CopyFromParent, CWOverrideRedirect, &attr );
+ XSelectInput( display, wnd, ExposureMask|StructureNotifyMask|
KeyPressMask|KeyReleaseMask|ButtonPressMask|ButtonReleaseMask|
PointerMotionMask|EnterWindowMask|LeaveWindowMask);
// Display the window
XMapRaised( display, wnd );
- XSync( display, False );
+
+ XEvent evt;
+ do
+ {
+ XNextEvent( display, &evt );
+ } while( evt.type != MapNotify );
+
+ fprintf(stderr, "\nDONE\n");
WindowList.push_back( (SkinWindow *)new OSWindow( p_intf, wnd, x, y,
visible, fadetime, alpha, movealpha, dragdrop, name ) ) ;