]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - Ada95/samples/sample-menu_demo-handler.adb
ncurses 5.7 - patch 20090110
[ncurses.git] / Ada95 / samples / sample-menu_demo-handler.adb
index cac7578bfdcb4ae4ca6f1ea57cce588f43b62205..18747e9fef66745c4e2ccdf26ff3f16e99979811 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998 Free Software Foundation, Inc.                        --
+-- Copyright (c) 1998,2004 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            --
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
---  Author: Juergen Pfeifer <Juergen.Pfeifer@T-Online.de> 1996
+--  Author:  Juergen Pfeifer, 1996
 --  Version Control
---  $Revision: 1.5 $
---  Binding Version 00.93
+--  $Revision: 1.15 $
+--  $Date: 2004/08/21 21:37:00 $
+--  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
 
@@ -63,14 +64,19 @@ package body Sample.Menu_Demo.Handler is
                        Col   : in Column_Position;
                        Title : in 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;