Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
X11Events.h
Go to the documentation of this file.
1// @(#)root/graf2d:$Id$
2// Author: Timur Pocheptsov 16/02/2012
3
4/*************************************************************************
5 * Copyright (C) 1995-2012, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_X11Events
13#define ROOT_X11Events
14
15#include <deque>
16
17#include "GuiTypes.h"
18
19#include <Foundation/Foundation.h>
20
21//////////////////////////////////////////////////////////////////////////
22// //
23// EventTranslator class translates Cocoa events to 'ROOT's X11' events.//
24// In 90% cases there is no direct mapping from Cocoa event to //
25// X11 event: Cocoa events are more simple (from programmer's POV). //
26// EventTranslator tries to emulate X11 behavior. //
27// //
28//////////////////////////////////////////////////////////////////////////
29
30class TGCocoa;
31
32@protocol X11Window;
33
34@class QuartzWindow;
35@class NSEvent;
36@class NSView;
37
38namespace ROOT {
39namespace MacOSX {
40namespace X11 {//X11 emulation for Cocoa.
41
47};
48
49typedef std::deque<Event_t> EventQueue_t;
50
52 friend class ::TGCocoa;
53public:
55
56 void GenerateConfigureNotifyEvent(NSView<X11Window> *view, const NSRect &newFrame);
57 void GenerateDestroyNotify(unsigned /*winID*/);
58 void GenerateExposeEvent(NSView<X11Window> *view, const NSRect &exposedRect);
59
60 void GenerateCrossingEvent(NSEvent *theEvent);
61 void GeneratePointerMotionEvent(NSEvent *theEvent);
62
63 void GenerateButtonPressEvent(NSView<X11Window> *eventView, NSEvent *theEvent, EMouseButton btn);
65
66 void GenerateKeyPressEvent(NSView<X11Window> *eventView, NSEvent *theEvent);
67 void GenerateKeyReleaseEvent(NSView<X11Window> *eventView, NSEvent *theEvent);
68
70
71 void SetPointerGrab(NSView<X11Window> *grabView, unsigned eventMask, bool ownerEvents);
72 void CancelPointerGrab();
73
74 void SetInputFocus(NSView<X11Window> *focusView);
75 unsigned GetInputFocus()const;
76
77 //Window winID was either deleted or unmapped.
78 //If it's a grab view or a parent of a grab view - cancel grab.
79 //If it's a "view under pointer" - reset view under pointer.
80 //If it's a focus view, cancel focus.
81 void CheckUnmappedView(Window_t winID);
82
83 bool HasPointerGrab()const;
84
85private:
86
87 //Used both by grab and non-grab case.
90
93
96
99
100 void GenerateKeyPressEventNoGrab(NSView<X11Window> *eventView, NSEvent *theEvent);
101 void GenerateKeyReleaseEventNoGrab(NSView<X11Window> *eventView, NSEvent *theEvent);
102
103 void GenerateKeyEventActiveGrab(NSView<X11Window> *eventView, NSEvent *theEvent);//Both press/release events.
104 void GenerateKeyEventForView(NSView<X11Window> *view, NSEvent *theEvent);//Both press/release events.
105
106 void FindButtonGrab(NSView<X11Window> *fromView, NSEvent *theEvent, EMouseButton btn);
107 void FindKeyGrabView(NSView<X11Window> *eventView, NSEvent *theEvent);
108
110
114
115
120
122};
123
124void MapUnicharToKeySym(unichar key, char *buf, Int_t len, UInt_t &rootKeySym);
126NSUInteger GetCocoaKeyModifiersFromROOTKeyModifiers(UInt_t rootKeyModifiers);
127
128UInt_t GetModifiers();//Mouse buttons + keyboard modifiers.
129
130}//X11
131}//MacOSX
132}//ROOT
133
134#endif
Handle_t Window_t
Window handle.
Definition GuiTypes.h:29
EMouseButton
Button names.
Definition GuiTypes.h:214
int Int_t
Definition RtypesCore.h:45
unsigned int UInt_t
Definition RtypesCore.h:46
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void SetInputFocus
void CheckUnmappedView(Window_t winID)
void FindKeyGrabView(NSView< X11Window > *eventView, NSEvent *theEvent)
NSView< X11Window > * fButtonGrabView
Definition X11Events.h:116
void GenerateFocusChangeEvent(NSView< X11Window > *eventView)
void FindButtonGrab(NSView< X11Window > *fromView, NSEvent *theEvent, EMouseButton btn)
void GenerateExposeEvent(NSView< X11Window > *view, const NSRect &exposedRect)
NSView< X11Window > * fFocusView
Definition X11Events.h:118
void GenerateKeyEventActiveGrab(NSView< X11Window > *eventView, NSEvent *theEvent)
void GenerateConfigureNotifyEvent(NSView< X11Window > *view, const NSRect &newFrame)
void GenerateCrossingEvent(NSEvent *theEvent)
void GenerateKeyEventForView(NSView< X11Window > *view, NSEvent *theEvent)
void GenerateButtonPressEventActiveGrab(NSView< X11Window > *view, NSEvent *theEvent, EMouseButton btn)
void GeneratePointerMotionEventNoGrab(NSEvent *theEvent)
void GenerateCrossingEventActiveGrab(NSEvent *theEvent)
NSView< X11Window > * fKeyGrabView
Definition X11Events.h:117
void GenerateButtonReleaseEventActiveGrab(NSView< X11Window > *eventView, NSEvent *theEvent, EMouseButton btn)
void GenerateButtonReleaseEventNoGrab(NSView< X11Window > *eventView, NSEvent *theEvent, EMouseButton btn)
void GenerateKeyReleaseEvent(NSView< X11Window > *eventView, NSEvent *theEvent)
void SetPointerGrab(NSView< X11Window > *grabView, unsigned eventMask, bool ownerEvents)
void GenerateKeyPressEvent(NSView< X11Window > *eventView, NSEvent *theEvent)
void GenerateKeyPressEventNoGrab(NSView< X11Window > *eventView, NSEvent *theEvent)
void GenerateKeyReleaseEventNoGrab(NSView< X11Window > *eventView, NSEvent *theEvent)
void GenerateCrossingEventNoGrab(NSEvent *theEvent)
void GeneratePointerMotionEventActiveGrab(NSEvent *theEvent)
void GenerateButtonPressEvent(NSView< X11Window > *eventView, NSEvent *theEvent, EMouseButton btn)
void GeneratePointerMotionEvent(NSEvent *theEvent)
NSView< X11Window > * fViewUnderPointer
Definition X11Events.h:109
void GenerateButtonPressEventNoGrab(NSView< X11Window > *view, NSEvent *theEvent, EMouseButton btn)
void GenerateButtonReleaseEvent(NSView< X11Window > *eventView, NSEvent *theEvent, EMouseButton btn)
This class implements TVirtualX interface for MacOS X, using Cocoa and Quartz 2D.
Definition TGCocoa.h:58
Int_t MapKeySymToKeyCode(Int_t keySym)
Definition X11Events.mm:178
std::deque< Event_t > EventQueue_t
Definition X11Events.h:49
void MapUnicharToKeySym(unichar key, char *buf, Int_t len, UInt_t &rootKeySym)
Definition X11Events.mm:98
UInt_t GetModifiers()
Definition X11Events.mm:300
NSUInteger GetCocoaKeyModifiersFromROOTKeyModifiers(UInt_t rootKeyModifiers)
Definition X11Events.mm:261
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.