X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=Ada95%2Fsamples%2Fsample-menu_demo-handler.adb;h=84d29f6351bf5754f7099e0541743057ecf2700c;hp=cac7578bfdcb4ae4ca6f1ea57cce588f43b62205;hb=d4d1d81ab6fc1ad681ff120d925099f947fefcf3;hpb=661078ddbde3ce0f3b06e95642fbb9b5fef7dca1 diff --git a/Ada95/samples/sample-menu_demo-handler.adb b/Ada95/samples/sample-menu_demo-handler.adb index cac7578b..84d29f63 100644 --- a/Ada95/samples/sample-menu_demo-handler.adb +++ b/Ada95/samples/sample-menu_demo-handler.adb @@ -7,7 +7,7 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright (c) 1998-2004,2009 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 -- @@ -15,7 +15,7 @@ -- without limitation the rights to use, copy, modify, merge, publish, -- -- distribute, distribute with modifications, sublicense, and/or sell -- -- copies of the Software, and to permit persons to whom the Software is -- --- furnished to do so, subject to the following conditions: -- +-- furnished to do so, subject to the following conditions : -- -- -- -- The above copyright notice and this permission notice shall be included -- -- in all copies or substantial portions of the Software. -- @@ -33,21 +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.5 $ --- Binding Version 00.93 +-- $Revision: 1.16 $ +-- $Date: 2009/12/26 17:38:58 $ +-- Binding Version 01.00 ------------------------------------------------------------------------------ with Sample.Menu_Demo.Aux; -with Sample.Explanation; use Sample.Explanation; with Sample.Manifest; use Sample.Manifest; +with Terminal_Interface.Curses.Mouse; use Terminal_Interface.Curses.Mouse; package body Sample.Menu_Demo.Handler is package Aux renames Sample.Menu_Demo.Aux; - procedure Drive_Me (M : in Menu; - Title : in String := "") + procedure Drive_Me (M : Menu; + Title : String := "") is L : Line_Count; C : Column_Count; @@ -58,19 +59,24 @@ package body Sample.Menu_Demo.Handler is Drive_Me (M, Y, X, Title); end Drive_Me; - procedure Drive_Me (M : in Menu; - Lin : in Line_Position; - Col : in Column_Position; - Title : in String := "") + procedure Drive_Me (M : Menu; + Lin : Line_Position; + Col : Column_Position; + Title : String := "") is - Pan : Panel := Aux.Create (M, Title, Lin, Col); - V : Cursor_Visibility := Invisible; + Mask : Event_Mask := No_Events; + Old : Event_Mask; + Pan : Panel := Aux.Create (M, Title, Lin, Col); + V : Cursor_Visibility := Invisible; begin + -- We are only interested in Clicks with the left button + Register_Reportable_Events (Left, All_Clicks, Mask); + Old := Start_Mouse (Mask); Set_Cursor_Visibility (V); loop declare K : Key_Code := Aux.Get_Request (M, Pan); - R : Driver_Result := Driver (M, K); + R : constant Driver_Result := Driver (M, K); begin case R is when Menu_Ok => null; @@ -79,6 +85,9 @@ package body Sample.Menu_Demo.Handler is I : constant Item := Current (M); O : Item_Option_Set; begin + if K = Key_Mouse then + K := SELECT_ITEM; + end if; Get_Options (I, O); if K = SELECT_ITEM and then not O.Selectable then Beep; @@ -92,7 +101,7 @@ package body Sample.Menu_Demo.Handler is end case; end; end loop; - Set_Cursor_Visibility (V); + End_Mouse (Old); Aux.Destroy (M, Pan); end Drive_Me;