private FilterReturn FilterFunc(IntPtr xevent, Event evnt)
        {
            if (xevent == IntPtr.Zero)
                return FilterReturn.Continue;

            var e = (X11.XEvent)Marshal.PtrToStructure(xevent, typeof(X11.XEvent));

            // Dropping these events is non standard but so is embeding a Gtk into
            // a X11 Window.
            if (e.type == X11.XEventName.FocusOut ||
                e.type == X11.XEventName.LeaveNotify)
            {
                return FilterReturn.Remove;
            }

            // Ensure Mouse clicks and Button go to the right place
            if (e.type == X11.XEventName.ButtonPress ||
                e.type == X11.XEventName.KeyPress)
            {
                // TODO: possibly cancel any tooltip windows.

                this.m_parent.Focus();
                return FilterReturn.Continue;
            }

            // Everything else just process as normal
            return FilterReturn.Continue;
        }
        public override CellEditable StartEditing(Gdk.Event ev, Widget widget, string path, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, CellRendererState flags)
        {
            if (property == null || editorCell == null || !sensitive)
            {
                return(null);
            }

            StateType   state   = GetState(flags);
            EditSession session = editorCell.StartEditing(cell_area, state);

            if (session == null)
            {
                return(null);
            }
            Gtk.Widget propEditor = (Gtk.Widget)session.Editor;
            propEditor.Show();
            HackEntry e = new HackEntry(session, propEditor);

            e.Show();
            session.Changed += delegate {
                ((InternalTree)widget).PropertyTree.NotifyChanged();
            };
            TreeIter it;

            ((InternalTree)widget).Model.GetIterFromString(out it, path);
            ((InternalTree)widget).EditingIter = it;
            return(e);
        }
		protected override bool OnDeleteEvent (Event evnt)
		{
			var documents = IdeApp.Workbench.Documents.Where (IsChildOfMe).ToList ();

			int howManyDirtyFiles = documents.Count (doc => doc.IsDirty);
			if (howManyDirtyFiles > 1) {
				using (var dlg = new DirtyFilesDialog (documents, closeWorkspace: false, groupByProject: false)) {
					dlg.Modal = true;
					if (MessageService.ShowCustomDialog (dlg) != (int)Gtk.ResponseType.Ok)
						return true;
				}
			} else if (howManyDirtyFiles == 1) {
				// Ensure dirty file is closed first. This prevents saved files being closed
				// if the save is cancelled.
				documents.Sort (DirtyFilesFirst);
			}

			foreach (var d in documents) {
				if (howManyDirtyFiles > 1)
					d.Window.CloseWindow (true);
				else if (!d.Close ())
					return true;
			}
			return base.OnDeleteEvent (evnt);
		}
Exemple #4
0
        protected override bool OnWidgetEvent(Gdk.Event evnt)
        {
            // This method is hooked to block the event as soon as possible if required

            if (evnt.Window.Equals(this.GdkWindow))
            {
                switch (evnt.Type)
                {
                case Gdk.EventType.ButtonPress:
                case Gdk.EventType.ButtonRelease:
                case Gdk.EventType.ThreeButtonPress:
                case Gdk.EventType.TwoButtonPress:
                    Gdk.EventButton eb = new Gdk.EventButton(evnt.Handle);
                    return(PropagateEventGivenCoordinate(evnt, eb.X, eb.XRoot, eb.Y, eb.YRoot));

                case Gdk.EventType.MotionNotify:
                    Gdk.EventMotion em = new Gdk.EventMotion(evnt.Handle);
                    return(PropagateEventGivenCoordinate(evnt, em.X, em.XRoot, em.Y, em.YRoot));

                case Gdk.EventType.LeaveNotify:
                    foreach (Widget w in lastHoveredWidgets)
                    {
                        w.ProcessEvent(evnt);
                    }
                    lastHoveredWidgets.Clear();
                    return(base.OnWidgetEvent(evnt));
                }
            }
            return(base.OnWidgetEvent(evnt));
        }
Exemple #5
0
 protected override bool OnDeleteEvent(Gdk.Event evnt)
 {
     if (timeout_id > 0)
     {
         GLib.Timeout.Remove(timeout_id);
     }
     return(base.OnDeleteEvent(evnt));
 }
    protected override bool OnDeleteEvent(Gdk.Event evnt)
    {
        if (SaveCheckDialogResult.Cancel != this.Quit())
        {
            return(base.OnDeleteEvent(evnt));
        }

        return(true);
    }
		protected override bool OnDeleteEvent (Event evnt)
		{
			var documents = IdeApp.Workbench.Documents.Where (IsChildOfMe).ToList ();
			foreach (var d in documents) {
				if (!d.Close ())
					return true;
			}
			return base.OnDeleteEvent (evnt);
		}
Exemple #8
0
		protected override bool OnDeleteEvent (Event evnt)
		{
            foreach (var notebook in Container.GetNotebooks ().ToList ())
            foreach (var tab in notebook.Tabs.ToList ())
                if (!notebook.OnCloseTab (tab))
                    return true;

			return base.OnDeleteEvent (evnt);
		}
Exemple #9
0
        public override CellEditable StartEditing (Gdk.Event evnt, Widget widget, string path,
            Gdk.Rectangle background_area, Gdk.Rectangle cell_area, CellRendererState flags)
        {
            CellEditEntry text = new CellEditEntry ();
            text.EditingDone += OnEditDone;
            text.Text = source.Name;
            text.path = path;
            text.Show ();

            view.EditingRow = true;

            return text;
        }
Exemple #10
0
 public override CellEditable StartEditing(Gdk.Event evnt,
                                           Widget widget,
                                           string path,
                                           Gdk.Rectangle background_area,
                                           Gdk.Rectangle cell_area,
                                           CellRendererState flags)
 {
     if (VisibilityChanged != null)
     {
         VisibilityChanged(this, null);
     }
     return(null);
 }
Exemple #11
0
        public override CellEditable StartEditing(Gdk.Event ev, Widget widget, string path, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, CellRendererState flags)
        {
            this.path = path;

            Gtk.ComboBox combo = Gtk.ComboBox.NewText();
            foreach (string s in values)
            {
                combo.AppendText(s);
            }

            combo.Active   = Array.IndexOf(values, Text);
            combo.Changed += new EventHandler(SelectionChanged);
            return(new TreeViewCellContainer(combo));
        }
    protected override bool OnDeleteEvent(Gdk.Event ev)
    {
        if (!LeftSpliter.Sensitive && !RigthSpliter.Sensitive && !bntCreateMirror.Visible)
        {
            var Msg = Message("Save the progress?", "DriveMirror", MessageType.Question, ButtonsType.YesNo);
            if (Msg == ResponseType.Yes)
            {
                MirrorWorker.SaveProgress();
            }
        }

        Application.Quit();
        return(true);
    }
        public override CellEditable StartEditing(Gdk.Event ev, Widget widget, string path, Gdk.Rectangle background_area, Gdk.Rectangle cell_area, CellRendererState flags)
        {
            if (property == null || editorCell == null || !sensitive)
            {
                return(null);
            }

            StateType   state   = GetState(flags);
            EditSession session = editorCell.StartEditing(cell_area, state);

            if (session == null)
            {
                return(null);
            }
            Gtk.Widget propEditor = (Gtk.Widget)session.Editor;
            propEditor.Show();
            HackEntry e = new HackEntry(propEditor, session);

            e.Show();
            return(e);
        }
Exemple #14
0
        private FilterReturn FilterFunc(IntPtr xevent, Event evnt)
        {
            if (xevent == IntPtr.Zero)
                return FilterReturn.Continue;

            var e = (X11.XEvent)Marshal.PtrToStructure(xevent, typeof(X11.XEvent));

            if (e.type == X11.XEventName.PropertyNotify) {
                var actWin = Screen.Default.ActiveWindow;

                if (actWin != null) {
                    if (lastActive == null || actWin.Handle != lastActive.Handle) {
                        lastActive = actWin;
                        var win = Windows.GetOrCreate(actWin.Handle);
                        RaiseWindowActivated(win);
                    }
                }

            }

            // Everything else just process as normal
            return FilterReturn.Continue;
        }
Exemple #15
0
 protected override bool OnDeleteEvent(Event evnt)
 {
     CloseAndQuit ();
     return true;
 }
Exemple #16
0
 protected override bool OnDeleteEvent(Event ev)
 {
     Application.Quit ();
     return true;
 }
Exemple #17
0
 public MouseEvent(IDrawingView view, Gdk.Event gdkEvent, PointD point) : base(view, gdkEvent)
 {
     _drawingPoint = point;
 }
Exemple #18
0
        private bool PropagateEventGivenCoordinate(Gdk.Event evnt, double X, double XRoot, double Y, double YRoot)
        {
            int       x = (int)X, y = (int)Y;
            Container current    = this;        // Current container containing the coordinate
            Widget    match      = this;        // Current match for the position
            int       matchedPos = 0;           // Current position in lastHoveredWidgets

            while (matchedPos < lastHoveredWidgets.Count)
            {
                Widget candidate = lastHoveredWidgets[matchedPos];
                if (candidate.Parent == current)                // Is it still a child of the current container ?
                {
                    Gdk.Rectangle alloc = candidate.Allocation;
                    if (!alloc.Contains(x, y))                          // Does it contain the coordinate ?
                    {
                        break;
                    }
                }
                current = candidate as Container;
                match   = candidate;
                ++matchedPos;
            }

            if (matchedPos < lastHoveredWidgets.Count)                  // Not all widgets match
            {
                // Send a leave notify
                SendSyntheticEvent(EventType.LeaveNotify, evnt, X, XRoot, Y, YRoot, lastHoveredWidgets, matchedPos);

                // Remove them
                lastHoveredWidgets.RemoveRange(matchedPos, lastHoveredWidgets.Count - matchedPos);
            }

            while (current != null)
            {
                Container next = null;
                foreach (Widget child in current.Children)
                {
                    if (child.IsNoWindow)
                    {
                        Gdk.Rectangle alloc = child.Allocation;
                        if (alloc.Contains(x, y))
                        {
                            lastHoveredWidgets.Add(child);
                            match = child;
                            next  = child as Container;
                            break;
                        }
                    }
                }
                current = next;
            }

            if (matchedPos < lastHoveredWidgets.Count)                  // New widgets have been found
            {
                // Send an enter notify
                SendSyntheticEvent(EventType.EnterNotify, evnt, X, XRoot, Y, YRoot, lastHoveredWidgets, matchedPos);
            }

            if (match == this)                  // No widget found, the window keeps the event
            {
                return(base.OnWidgetEvent(evnt));
            }
            else                // A widget has been found, let's send it the event
            {
                match.ProcessEvent(evnt);
                return(true);
            }
        }
Exemple #19
0
        /// <summary>
        /// Handles X events. Gets first and second selection points and sets selected screen region as clipboard content.
        /// </summary>
        /// <param name="xEvent">X event.</param>
        /// <param name="gdkEvent">Gdk event.</param>
        private FilterReturn OnScreenshotMouseChanged(IntPtr xEvent, Event gdkEvent)
        {
            try
            {
                IXButtonEvent evnt = null;

                switch (this.architecture)
                {
                    case Architectures.X86:
                        evnt = (XButtonEvent32)Marshal.PtrToStructure(xEvent, typeof(XButtonEvent32));
                        break;

                    case Architectures.X86_64:
                        evnt = (XButtonEvent64)Marshal.PtrToStructure(xEvent, typeof(XButtonEvent64));
                        break;
                }

                switch (evnt.Type)
                {
                    case EventType.ButtonPress:
                        this.rectangle = new Rectangle(evnt.X, evnt.Y);
                        this.pixbuf = Pixbuf.FromDrawable(this.rootWindow, this.rootWindow.Colormap, 0, 0, 0, 0, this.rootWindow.Screen.Width, this.rootWindow.Screen.Height);
                        this.CreateWindow();

                        break;

                    case EventType.ButtonRelease:
                        this.rectangle.SetEndPoint(evnt.X, evnt.Y);
                        Pixbuf pb = this.GetPixmapFromRectangle();

                        this.Ungrab();
                        this.rectangle = null;

                        if (pb != null)
                        {
                            new ImageWindow(pb).ShowAll();
                            pb.Dispose();
                        }

                        break;

                    case EventType.MotionNotify:
                        if (this.rectangle != null && this.rectangle.X2 != evnt.X && this.rectangle.Y2 != evnt.Y)
                        {
                            this.rectangle.SetEndPoint(evnt.X, evnt.Y);
                            this.window.Move(this.rectangle.X1 < this.rectangle.X2 ? this.rectangle.X1 : this.rectangle.X2, this.rectangle.Y1 < this.rectangle.Y2 ? this.rectangle.Y1 : this.rectangle.Y2);
                            this.window.Resize(this.rectangle.Width, this.rectangle.Height);
                        }

                        break;

                    case EventType.KeyPress:
                    case EventType.KeyRelease:
                        this.Ungrab();
                        this.rectangle = null;

                        break;
                }
            }
            catch (Exception ex)
            {
                this.Ungrab();
                Tools.PrintInfo(ex, this.GetType());
            }

            return FilterReturn.Continue;
        }
Exemple #20
0
 private FilterReturn ManagerFilter(IntPtr xevent, Event evnt)
 {
     //TODO: Implement;
     return FilterReturn.Continue;
 }
		private void SendSyntheticEvent (EventType Type, Event OriginalEvent, double X, double XRoot, double Y, double YRoot, IList<Widget> Widgets, int Index)
		{
			SyntheticEventCrossing se = new SyntheticEventCrossing();
			se.Detail = NotifyType.Ancestor;
			se.Focus = false;
			se.Mode = CrossingMode.Normal;
			se.SendEvent = false;
			se.State = ModifierType.None;
			se.Subwindow = null;
			//se.Time = DateTime.Now.Ticks / 10000;	// TODO: the real value shoud be the uptime I think
			se.Time = 0;
			se.Type = Type;
			se.Window = OriginalEvent.Window;
			se.X = X;
			se.XRoot = XRoot;
			se.Y = Y;
			se.YRoot = YRoot;
			
			unsafe
			{
				Event managedEvent = new Event(new IntPtr(&se));
				
				for(int i = Index ; i < Widgets.Count ; ++i)
				{
					Widgets[i].ProcessEvent (managedEvent);
				}
			}
		}
Exemple #22
0
 public void StartEditing(Gdk.Event evnt)
 {
     System.Console.WriteLine("StartEditing() " + evnt.Window.GetType());
 }
Exemple #23
0
 protected override bool OnDeleteEvent(Gdk.Event evnt)
 {
     App.Current.GUIToolkit.Quit();
     return(true);
 }
 private FilterReturn ManagerFilter(IntPtr xevent, Event evnt)
 {
     return FilterReturn.Continue;
 }
		private FilterReturn ManagerFilter (IntPtr xevent, Event evnt)
		{
			XAnyEvent xev = (XAnyEvent) Marshal.PtrToStructure (xevent, typeof(XAnyEvent));
        
			if (xev.type == XEventName.ClientMessage){
				XClientMessageEvent xclient = (XClientMessageEvent) Marshal.PtrToStructure (xevent, typeof(XClientMessageEvent));

				if (xclient.message_type == manager_atom && xclient.data.ptr2 == selection_atom) {
					UpdateManagerWindow (true);
					return FilterReturn.Continue;
				}
			}

			if (xev.window == manager_window) {
				if (xev.type == XEventName.PropertyNotify){
					XPropertyEvent xproperty = (XPropertyEvent) Marshal.PtrToStructure (xevent, typeof(XPropertyEvent));
					if (xproperty.atom == orientation_atom) {
						GetOrientationProperty();
						return FilterReturn.Continue;
					}
				}

				if (xev.type == XEventName.DestroyNotify) {
					ManagerWindowDestroyed();
				}
			}
        
			return FilterReturn.Continue;
		}
		protected override bool OnDeleteEvent (Event evnt)
		{
			Hide ();
			ActiveDock = null;
			return true;
		}
 protected override bool OnDeleteEvent(Gdk.Event ev)
 {
     Gtk.Application.Quit();
     return(true);
 }
Exemple #28
0
 protected override bool OnDeleteEvent(Gdk.Event evt)
 {
     Destroy();
     return(true);
 }
		public void StartEditing (Event evnt)
		{
			System.Console.WriteLine("DateEntry.StartEditing()");
//			throw new System.NotImplementedException();
		}
Exemple #30
0
 public KeyEvent(IDrawingView view, Gdk.Event gdkEvent) : base(view, gdkEvent)
 {
 }
Exemple #31
0
 protected override bool OnUnmapEvent(Event evnt)
 {
     Hide();
     return base.OnUnmapEvent(evnt);
 }
Exemple #32
0
        /// <summary>
        /// Matches catched key combination to hotkey and executes it's action.
        /// </summary>
        /// <param name="xEvent">X event arguments.</param>
        /// <param name="gdkEvent">Gdk event arguments.</param>
        private FilterReturn OnHotkeyPressed(IntPtr xEvent, Event gdkEvent)
        {
            try
            {
                IXKeyEvent evnt = null;
                ModifierType modifiers;

                switch (this.Architecture)
                {
                    case Architectures.X86:
                        evnt = (XKeyEvent32)Marshal.PtrToStructure(xEvent, typeof(XKeyEvent32));
                        break;

                    case Architectures.X86_64:
                        evnt = (XKeyEvent64)Marshal.PtrToStructure(xEvent, typeof(XKeyEvent64));
                        break;
                }

                if (evnt.Type == XEventTypeKeyPress)
                {
                    modifiers = evnt.Modifiers;

                    if (modifiers.ToString().Contains(ModifierType.LockMask.ToString()))
                        modifiers = (ModifierType)((int)modifiers - (int)ModifierType.LockMask);
                    if (modifiers.ToString().Contains(ModifierType.Mod2Mask.ToString()))
                        modifiers = (ModifierType)((int)modifiers - (int)ModifierType.Mod2Mask);

                    Hotkey hotkey = this.grabbedHotkeys.FirstOrDefault(h => h.KeyCode == evnt.KeyCode && h.Modifiers == modifiers);

                    if (hotkey != null && hotkey.OnHotkeyPressed != null)
                        hotkey.OnHotkeyPressed();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }

            return FilterReturn.Continue;
        }
 public StartDragArgs(uint but, Event evt)
 {
     this.Button = but;
     this.Event = evt;
 }
Exemple #34
0
 protected override bool OnDeleteEvent(Gdk.Event evnt)
 {
     CloseAndQuit();
     return(true);
 }
Exemple #35
0
 public StartDragArgs(uint but, Event evt)
 {
     Button = but;
     Event = evt;
 }
Exemple #36
0
 protected Event(IDrawingView view, Gdk.Event gdkEvent)
 {
     _gdkEvent = gdkEvent;
     _view     = view;
 }
Exemple #37
0
        /// <summary>
        /// Handles X events. Gets point and reads it's color.
        /// </summary>
        /// <param name="xEvent">X event.</param>
        /// <param name="gdkEvent">Gdk event.</param>
        private FilterReturn OnColorMouseChanged(IntPtr xEvent, Event gdkEvent)
        {
            try
            {
                IXButtonEvent evnt = null;

                switch (this.architecture)
                {
                    case Architectures.X86:
                        evnt = (XButtonEvent32)Marshal.PtrToStructure(xEvent, typeof(XButtonEvent32));
                        break;

                    case Architectures.X86_64:
                        evnt = (XButtonEvent64)Marshal.PtrToStructure(xEvent, typeof(XButtonEvent64));
                        break;
                }

                switch (evnt.Type)
                {
                    case EventType.ButtonRelease:
                        this.pixbuf = Pixbuf.FromDrawable(this.rootWindow, this.rootWindow.Colormap, evnt.X, evnt.Y, 0, 0, 1, 1);
                        byte r, g, b;

                        unsafe
                        {
                            byte* ptr = (byte*)this.pixbuf.Pixels.ToPointer();
                            r = *ptr;
                            g = *(++ptr);
                            b = *(++ptr);
                        }

                        this.Ungrab();
                        new ColorWindow(r, g, b).ShowAll();

                        break;

                    case EventType.KeyPress:
                    case EventType.KeyRelease:
                        this.Ungrab();
                        break;
                }
            }
            catch (Exception ex)
            {
                this.Ungrab();
                Tools.PrintInfo(ex, this.GetType());
            }

            return FilterReturn.Continue;
        }
		private FilterReturn FilterFunc (IntPtr xevent, Event evnt)
		{
			if (xevent == IntPtr.Zero)
				return FilterReturn.Continue;

			var e = (X11.XEvent)Marshal.PtrToStructure(xevent, typeof(X11.XEvent));
			
			// Dropping these events is non standard but so is embeding a Gtk into
			// a X11 Window.
			if (e.type == X11.XEventName.FocusOut ||
				e.type == X11.XEventName.LeaveNotify)
			{
				return FilterReturn.Remove;
			}

			// Everything else just process as normal
			return FilterReturn.Continue;
		}
Exemple #39
0
        /// <summary>
        /// Catches key combination end emits HotkeyGrabbed event.
        /// </summary>
        /// <param name="xEvent">X event arguments.</param>
        /// <param name="gdkEvent">Gdk event arguments.</param>
        /// <returns>Filter state.</returns>
        private FilterReturn OnHotkeyGrabbed(IntPtr xEvent, Event gdkEvent)
        {
            try
            {
                IXKeyEvent evnt = null;
                Key key;
                ModifierType modifiers = ModifierType.None;

                switch (this.Architecture)
                {
                    case Architectures.X86:
                        evnt = (XKeyEvent32)Marshal.PtrToStructure(xEvent, typeof(XKeyEvent32));
                        break;

                    case Architectures.X86_64:
                        evnt = (XKeyEvent64)Marshal.PtrToStructure(xEvent, typeof(XKeyEvent64));
                        break;
                }

                key = (Key)XKeycodeToKeysym(this.XDisplay, evnt.KeyCode, 0);
                modifiers = evnt.Modifiers;

                if (key == Key.Escape || key == Key.BackSpace)
                {
                    this.UngrabKeyboard();

                    if (this.hotkeyGrabbedFunc != null)
                        this.hotkeyGrabbedFunc(this, null);

                    return FilterReturn.Continue;
                }

                if (OmittedModifiers.Contains(modifiers) || OmittedKeys.Contains(key))
                    return FilterReturn.Continue;

                if (modifiers.ToString().Contains(ModifierType.LockMask.ToString()))
                    modifiers = (ModifierType)((int)modifiers - (int)ModifierType.LockMask);

                if (modifiers.ToString().Contains(ModifierType.Mod2Mask.ToString()))
                    modifiers = (ModifierType)((int)modifiers - (int)ModifierType.Mod2Mask);

                if (this.hotkeyGrabbedFunc != null)
                    this.hotkeyGrabbedFunc(this, new HotkeyGrabbedArgs(modifiers, key));

                this.UngrabKeyboard();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }

            return FilterReturn.Continue;
        }
        protected override bool OnWidgetEvent(Event evnt)
        {
            if(evnt.Window.Equals (this.GdkWindow))
            {
                if(evnt.Type != Gdk.EventType.Expose)
                {

                    if(Child != null) Child.ProcessEvent (evnt);
                }
            }
            return base.OnWidgetEvent (evnt);
        }