X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=Ada95%2Fsrc%2Fterminal_interface-curses-mouse.adb;h=49a440e64909f0e7dcc9b475cecb433032cfee10;hp=8a7499ac31658eb64f5a6f036c200f4ac7dd1995;hb=746490c7ab9f66c7521c500684e65eca223c551c;hpb=0eb88fc5281804773e2a0c7a488a4452463535ce;ds=sidebyside diff --git a/Ada95/src/terminal_interface-curses-mouse.adb b/Ada95/src/terminal_interface-curses-mouse.adb index 8a7499ac..49a440e6 100644 --- a/Ada95/src/terminal_interface-curses-mouse.adb +++ b/Ada95/src/terminal_interface-curses-mouse.adb @@ -7,7 +7,7 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright (c) 1998-2014,2018 Free Software Foundation, Inc. -- -- -- -- Permission is hereby granted, free of charge, to any person obtaining a -- -- copy of this software and associated documentation files (the -- @@ -33,26 +33,22 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------ --- Author: Juergen Pfeifer 1996 +-- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.16 $ +-- $Revision: 1.26 $ +-- $Date: 2018/07/07 23:35:05 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -with System; - with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; with Interfaces.C; use Interfaces.C; use Interfaces; package body Terminal_Interface.Curses.Mouse is - use type System.Bit_Order; - use type Interfaces.C.int; - function Has_Mouse return Boolean is function Mouse_Avail return C_Int; - pragma Import (C, Mouse_Avail, "_nc_has_mouse"); + pragma Import (C, Mouse_Avail, "has_mouse"); begin if Has_Key (Key_Mouse) or else Mouse_Avail /= 0 then return True; @@ -76,8 +72,8 @@ package body Terminal_Interface.Curses.Mouse is return Event; end Get_Mouse; - procedure Register_Reportable_Event (Button : in Mouse_Button; - State : in Button_State; + procedure Register_Reportable_Event (Button : Mouse_Button; + State : Button_State; Mask : in out Event_Mask) is Button_Nr : constant Natural := Mouse_Button'Pos (Button); @@ -94,8 +90,8 @@ package body Terminal_Interface.Curses.Mouse is end if; end Register_Reportable_Event; - procedure Register_Reportable_Events (Button : in Mouse_Button; - State : in Button_States; + procedure Register_Reportable_Events (Button : Mouse_Button; + State : Button_States; Mask : in out Event_Mask) is begin @@ -116,20 +112,25 @@ package body Terminal_Interface.Curses.Mouse is Old : aliased Event_Mask; begin R := MMask (Mask, Old'Access); + if R = No_Events then + Beep; + end if; return Old; end Start_Mouse; - procedure End_Mouse (Mask : in Event_Mask := No_Events) + procedure End_Mouse (Mask : Event_Mask := No_Events) is begin - null; + if Mask /= No_Events then + Beep; + end if; end End_Mouse; - procedure Dispatch_Event (Mask : in Event_Mask; + procedure Dispatch_Event (Mask : Event_Mask; Button : out Mouse_Button; State : out Button_State); - procedure Dispatch_Event (Mask : in Event_Mask; + procedure Dispatch_Event (Mask : Event_Mask; Button : out Mouse_Button; State : out Button_State) is L : Event_Mask; @@ -165,7 +166,7 @@ package body Terminal_Interface.Curses.Mouse is end if; end Dispatch_Event; - procedure Get_Event (Event : in Mouse_Event; + procedure Get_Event (Event : Mouse_Event; Y : out Line_Position; X : out Column_Position; Button : out Mouse_Button; @@ -178,7 +179,7 @@ package body Terminal_Interface.Curses.Mouse is Dispatch_Event (Mask, Button, State); end Get_Event; - procedure Unget_Mouse (Event : in Mouse_Event) + procedure Unget_Mouse (Event : Mouse_Event) is function Ungetmouse (Ev : Mouse_Event) return C_Int; pragma Import (C, Ungetmouse, "ungetmouse"); @@ -196,7 +197,8 @@ package body Terminal_Interface.Curses.Mouse is pragma Import (C, Wenclose, "wenclose"); begin if Wenclose (Win, C_Int (Event.Y), C_Int (Event.X)) - = Curses_Bool_False then + = Curses_Bool_False + then return False; else return True;