Usermode/AxWin4 - Send mouse/keyboard events to client
[tpg/acess2.git] / Usermode / Applications / axwin4_src / Server / CWindow.cpp
index f70db32..7d50b7b 100644 (file)
 
 namespace AxWin {
 
-CWindow::CWindow(CCompositor& compositor, CClient& client, const ::std::string& name):
+CWindow::CWindow(CCompositor& compositor, CClient& client, const ::std::string& name, unsigned int id):
        m_surface(0,0,0,0),
        m_compositor(compositor),
        m_client(client),
-       m_name(name)
+       m_id(id),
+       m_name(name),
+       m_is_shown(false)
 {
        _SysDebug("CWindow::CWindow()");
 }
@@ -27,16 +29,15 @@ CWindow::~CWindow()
 
 void CWindow::Repaint(const CRect& rect)
 {
-       #if 0
-       for( auto rgn : m_regions )
+       if( m_is_shown )
        {
-               if( rect.Contains(rgn->m_rect) )
-               {
-                       CRect   rel_rect(rect, rgn->m_rect);
-                       rgn->Repaint(m_surface, rel_rect);
-               } 
+               CRect   outrect(
+                       m_surface.m_rect.m_x + rect.m_x, 
+                       m_surface.m_rect.m_y + rect.m_y, 
+                       rect.m_w, rect.m_h
+                       );
+               m_compositor.DamageArea(outrect);
        }
-       #endif
 }
 
 void CWindow::Show(bool bShow)
@@ -58,7 +59,12 @@ void CWindow::Move(int X, int Y)
 void CWindow::Resize(unsigned int W, unsigned int H)
 {
        m_surface.Resize(W, H);
-       IPC::SendNotify_Dims(m_client, W, H);
+       IPC::SendMessage_NotifyDims(m_client, m_id, W, H);
+}
+void CWindow::SetFlags(uint32_t Flags)
+{
+       // TODO: CWindow::SetFlags
+       _SysDebug("TOOD: CWindow::SetFlags");
 }
 uint64_t CWindow::ShareSurface()
 {
@@ -68,14 +74,18 @@ uint64_t CWindow::ShareSurface()
 
 void CWindow::MouseButton(int ButtonID, int X, int Y, bool Down)
 {
+       IPC::SendMessage_MouseButton(m_client, m_id, X, Y, ButtonID, Down);
 }
 
 void CWindow::MouseMove(int NewX, int NewY)
 {
+       // TODO: Only enable move events if client requests them
+       //IPC::SendMessage_MouseMove(m_client, m_id, NewX, NewY);
 }
 
 void CWindow::KeyEvent(::uint32_t Scancode, const ::std::string &Translated, bool Down)
 {
+       IPC::SendMessage_KeyEvent(m_client, m_id, Scancode, Down, Translated.c_str());
 }
 
 

UCC git Repository :: git.ucc.asn.au