1 #pragma warning disable CS1591
3 using System.Runtime.InteropServices;
4 using System.Collections.Generic;
6 using System.ComponentModel;
7 namespace Efl { namespace Ui {
8 /// <summary>Efl UI scrollable interface</summary>
9 [IScrollableNativeInherit]
10 public interface IScrollable :
11 Efl.Eo.IWrapper, IDisposable
13 /// <summary>Called when scroll operation starts</summary>
14 event EventHandler ScrollStartEvt;
15 /// <summary>Called when scrolling</summary>
16 event EventHandler ScrollEvt;
17 /// <summary>Called when scroll operation stops</summary>
18 event EventHandler ScrollStopEvt;
19 /// <summary>Called when scrolling upwards</summary>
20 event EventHandler ScrollUpEvt;
21 /// <summary>Called when scrolling downwards</summary>
22 event EventHandler ScrollDownEvt;
23 /// <summary>Called when scrolling left</summary>
24 event EventHandler ScrollLeftEvt;
25 /// <summary>Called when scrolling right</summary>
26 event EventHandler ScrollRightEvt;
27 /// <summary>Called when hitting the top edge</summary>
28 event EventHandler EdgeUpEvt;
29 /// <summary>Called when hitting the bottom edge</summary>
30 event EventHandler EdgeDownEvt;
31 /// <summary>Called when hitting the left edge</summary>
32 event EventHandler EdgeLeftEvt;
33 /// <summary>Called when hitting the right edge</summary>
34 event EventHandler EdgeRightEvt;
35 /// <summary>Called when scroll animation starts</summary>
36 event EventHandler ScrollAnimStartEvt;
37 /// <summary>Called when scroll animation stopps</summary>
38 event EventHandler ScrollAnimStopEvt;
39 /// <summary>Called when scroll drag starts</summary>
40 event EventHandler ScrollDragStartEvt;
41 /// <summary>Called when scroll drag stops</summary>
42 event EventHandler ScrollDragStopEvt;
44 /// <summary>Efl UI scrollable interface</summary>
45 sealed public class IScrollableConcrete :
50 ///<summary>Pointer to the native class description.</summary>
51 public System.IntPtr NativeClass {
53 if (((object)this).GetType() == typeof (IScrollableConcrete))
54 return Efl.Ui.IScrollableNativeInherit.GetEflClassStatic();
56 return Efl.Eo.ClassRegister.klassFromType[((object)this).GetType()];
59 private EventHandlerList eventHandlers = new EventHandlerList();
60 private System.IntPtr handle;
61 ///<summary>Pointer to the native instance.</summary>
62 public System.IntPtr NativeHandle {
63 get { return handle; }
65 [System.Runtime.InteropServices.DllImport(efl.Libs.Efl)] internal static extern System.IntPtr
66 efl_ui_scrollable_interface_get();
67 ///<summary>Internal usage: Constructs an instance from a native pointer. This is used when interacting with C code and should not be used directly.</summary>
68 private IScrollableConcrete(System.IntPtr raw)
71 RegisterEventProxies();
73 ///<summary>Destructor.</summary>
74 ~IScrollableConcrete()
78 ///<summary>Releases the underlying native instance.</summary>
79 void Dispose(bool disposing)
81 if (handle != System.IntPtr.Zero) {
82 Efl.Eo.Globals.efl_unref(handle);
83 handle = System.IntPtr.Zero;
86 ///<summary>Releases the underlying native instance.</summary>
90 GC.SuppressFinalize(this);
92 ///<summary>Verifies if the given object is equal to this one.</summary>
93 public override bool Equals(object obj)
95 var other = obj as Efl.Object;
98 return this.NativeHandle == other.NativeHandle;
100 ///<summary>Gets the hash code for this object based on the native pointer it points to.</summary>
101 public override int GetHashCode()
103 return this.NativeHandle.ToInt32();
105 ///<summary>Turns the native pointer into a string representation.</summary>
106 public override String ToString()
108 return $"{this.GetType().Name}@[{this.NativeHandle.ToInt32():x}]";
110 private readonly object eventLock = new object();
111 private Dictionary<string, int> event_cb_count = new Dictionary<string, int>();
112 ///<summary>Adds a new event handler, registering it to the native event. For internal use only.</summary>
113 ///<param name="lib">The name of the native library definining the event.</param>
114 ///<param name="key">The name of the native event.</param>
115 ///<param name="evt_delegate">The delegate to be called on event raising.</param>
116 ///<returns>True if the delegate was successfully registered.</returns>
117 private bool AddNativeEventHandler(string lib, string key, Efl.EventCb evt_delegate) {
119 if (!event_cb_count.TryGetValue(key, out event_count))
120 event_cb_count[key] = event_count;
121 if (event_count == 0) {
122 IntPtr desc = Efl.EventDescription.GetNative(lib, key);
123 if (desc == IntPtr.Zero) {
124 Eina.Log.Error($"Failed to get native event {key}");
127 bool result = Efl.Eo.Globals.efl_event_callback_priority_add(handle, desc, 0, evt_delegate, System.IntPtr.Zero);
129 Eina.Log.Error($"Failed to add event proxy for event {key}");
132 Eina.Error.RaiseIfUnhandledException();
134 event_cb_count[key]++;
137 ///<summary>Removes the given event handler for the given event. For internal use only.</summary>
138 ///<param name="key">The name of the native event.</param>
139 ///<param name="evt_delegate">The delegate to be removed.</param>
140 ///<returns>True if the delegate was successfully registered.</returns>
141 private bool RemoveNativeEventHandler(string key, Efl.EventCb evt_delegate) {
143 if (!event_cb_count.TryGetValue(key, out event_count))
144 event_cb_count[key] = event_count;
145 if (event_count == 1) {
146 IntPtr desc = Efl.EventDescription.GetNative(efl.Libs.Efl, key);
147 if (desc == IntPtr.Zero) {
148 Eina.Log.Error($"Failed to get native event {key}");
151 bool result = Efl.Eo.Globals.efl_event_callback_del(handle, desc, evt_delegate, System.IntPtr.Zero);
153 Eina.Log.Error($"Failed to remove event proxy for event {key}");
156 Eina.Error.RaiseIfUnhandledException();
157 } else if (event_count == 0) {
158 Eina.Log.Error($"Trying to remove proxy for event {key} when there is nothing registered.");
161 event_cb_count[key]--;
164 private static object ScrollStartEvtKey = new object();
165 /// <summary>Called when scroll operation starts</summary>
166 public event EventHandler ScrollStartEvt
170 string key = "_EFL_UI_EVENT_SCROLL_START";
171 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_ScrollStartEvt_delegate)) {
172 eventHandlers.AddHandler(ScrollStartEvtKey , value);
174 Eina.Log.Error($"Error adding proxy for event {key}");
179 string key = "_EFL_UI_EVENT_SCROLL_START";
180 if (RemoveNativeEventHandler(key, this.evt_ScrollStartEvt_delegate)) {
181 eventHandlers.RemoveHandler(ScrollStartEvtKey , value);
183 Eina.Log.Error($"Error removing proxy for event {key}");
187 ///<summary>Method to raise event ScrollStartEvt.</summary>
188 public void On_ScrollStartEvt(EventArgs e)
192 evt = (EventHandler)eventHandlers[ScrollStartEvtKey];
194 evt?.Invoke(this, e);
196 Efl.EventCb evt_ScrollStartEvt_delegate;
197 private void on_ScrollStartEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
199 EventArgs args = EventArgs.Empty;
201 On_ScrollStartEvt(args);
202 } catch (Exception e) {
203 Eina.Log.Error(e.ToString());
204 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
208 private static object ScrollEvtKey = new object();
209 /// <summary>Called when scrolling</summary>
210 public event EventHandler ScrollEvt
214 string key = "_EFL_UI_EVENT_SCROLL";
215 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_ScrollEvt_delegate)) {
216 eventHandlers.AddHandler(ScrollEvtKey , value);
218 Eina.Log.Error($"Error adding proxy for event {key}");
223 string key = "_EFL_UI_EVENT_SCROLL";
224 if (RemoveNativeEventHandler(key, this.evt_ScrollEvt_delegate)) {
225 eventHandlers.RemoveHandler(ScrollEvtKey , value);
227 Eina.Log.Error($"Error removing proxy for event {key}");
231 ///<summary>Method to raise event ScrollEvt.</summary>
232 public void On_ScrollEvt(EventArgs e)
236 evt = (EventHandler)eventHandlers[ScrollEvtKey];
238 evt?.Invoke(this, e);
240 Efl.EventCb evt_ScrollEvt_delegate;
241 private void on_ScrollEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
243 EventArgs args = EventArgs.Empty;
246 } catch (Exception e) {
247 Eina.Log.Error(e.ToString());
248 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
252 private static object ScrollStopEvtKey = new object();
253 /// <summary>Called when scroll operation stops</summary>
254 public event EventHandler ScrollStopEvt
258 string key = "_EFL_UI_EVENT_SCROLL_STOP";
259 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_ScrollStopEvt_delegate)) {
260 eventHandlers.AddHandler(ScrollStopEvtKey , value);
262 Eina.Log.Error($"Error adding proxy for event {key}");
267 string key = "_EFL_UI_EVENT_SCROLL_STOP";
268 if (RemoveNativeEventHandler(key, this.evt_ScrollStopEvt_delegate)) {
269 eventHandlers.RemoveHandler(ScrollStopEvtKey , value);
271 Eina.Log.Error($"Error removing proxy for event {key}");
275 ///<summary>Method to raise event ScrollStopEvt.</summary>
276 public void On_ScrollStopEvt(EventArgs e)
280 evt = (EventHandler)eventHandlers[ScrollStopEvtKey];
282 evt?.Invoke(this, e);
284 Efl.EventCb evt_ScrollStopEvt_delegate;
285 private void on_ScrollStopEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
287 EventArgs args = EventArgs.Empty;
289 On_ScrollStopEvt(args);
290 } catch (Exception e) {
291 Eina.Log.Error(e.ToString());
292 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
296 private static object ScrollUpEvtKey = new object();
297 /// <summary>Called when scrolling upwards</summary>
298 public event EventHandler ScrollUpEvt
302 string key = "_EFL_UI_EVENT_SCROLL_UP";
303 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_ScrollUpEvt_delegate)) {
304 eventHandlers.AddHandler(ScrollUpEvtKey , value);
306 Eina.Log.Error($"Error adding proxy for event {key}");
311 string key = "_EFL_UI_EVENT_SCROLL_UP";
312 if (RemoveNativeEventHandler(key, this.evt_ScrollUpEvt_delegate)) {
313 eventHandlers.RemoveHandler(ScrollUpEvtKey , value);
315 Eina.Log.Error($"Error removing proxy for event {key}");
319 ///<summary>Method to raise event ScrollUpEvt.</summary>
320 public void On_ScrollUpEvt(EventArgs e)
324 evt = (EventHandler)eventHandlers[ScrollUpEvtKey];
326 evt?.Invoke(this, e);
328 Efl.EventCb evt_ScrollUpEvt_delegate;
329 private void on_ScrollUpEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
331 EventArgs args = EventArgs.Empty;
333 On_ScrollUpEvt(args);
334 } catch (Exception e) {
335 Eina.Log.Error(e.ToString());
336 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
340 private static object ScrollDownEvtKey = new object();
341 /// <summary>Called when scrolling downwards</summary>
342 public event EventHandler ScrollDownEvt
346 string key = "_EFL_UI_EVENT_SCROLL_DOWN";
347 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_ScrollDownEvt_delegate)) {
348 eventHandlers.AddHandler(ScrollDownEvtKey , value);
350 Eina.Log.Error($"Error adding proxy for event {key}");
355 string key = "_EFL_UI_EVENT_SCROLL_DOWN";
356 if (RemoveNativeEventHandler(key, this.evt_ScrollDownEvt_delegate)) {
357 eventHandlers.RemoveHandler(ScrollDownEvtKey , value);
359 Eina.Log.Error($"Error removing proxy for event {key}");
363 ///<summary>Method to raise event ScrollDownEvt.</summary>
364 public void On_ScrollDownEvt(EventArgs e)
368 evt = (EventHandler)eventHandlers[ScrollDownEvtKey];
370 evt?.Invoke(this, e);
372 Efl.EventCb evt_ScrollDownEvt_delegate;
373 private void on_ScrollDownEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
375 EventArgs args = EventArgs.Empty;
377 On_ScrollDownEvt(args);
378 } catch (Exception e) {
379 Eina.Log.Error(e.ToString());
380 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
384 private static object ScrollLeftEvtKey = new object();
385 /// <summary>Called when scrolling left</summary>
386 public event EventHandler ScrollLeftEvt
390 string key = "_EFL_UI_EVENT_SCROLL_LEFT";
391 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_ScrollLeftEvt_delegate)) {
392 eventHandlers.AddHandler(ScrollLeftEvtKey , value);
394 Eina.Log.Error($"Error adding proxy for event {key}");
399 string key = "_EFL_UI_EVENT_SCROLL_LEFT";
400 if (RemoveNativeEventHandler(key, this.evt_ScrollLeftEvt_delegate)) {
401 eventHandlers.RemoveHandler(ScrollLeftEvtKey , value);
403 Eina.Log.Error($"Error removing proxy for event {key}");
407 ///<summary>Method to raise event ScrollLeftEvt.</summary>
408 public void On_ScrollLeftEvt(EventArgs e)
412 evt = (EventHandler)eventHandlers[ScrollLeftEvtKey];
414 evt?.Invoke(this, e);
416 Efl.EventCb evt_ScrollLeftEvt_delegate;
417 private void on_ScrollLeftEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
419 EventArgs args = EventArgs.Empty;
421 On_ScrollLeftEvt(args);
422 } catch (Exception e) {
423 Eina.Log.Error(e.ToString());
424 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
428 private static object ScrollRightEvtKey = new object();
429 /// <summary>Called when scrolling right</summary>
430 public event EventHandler ScrollRightEvt
434 string key = "_EFL_UI_EVENT_SCROLL_RIGHT";
435 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_ScrollRightEvt_delegate)) {
436 eventHandlers.AddHandler(ScrollRightEvtKey , value);
438 Eina.Log.Error($"Error adding proxy for event {key}");
443 string key = "_EFL_UI_EVENT_SCROLL_RIGHT";
444 if (RemoveNativeEventHandler(key, this.evt_ScrollRightEvt_delegate)) {
445 eventHandlers.RemoveHandler(ScrollRightEvtKey , value);
447 Eina.Log.Error($"Error removing proxy for event {key}");
451 ///<summary>Method to raise event ScrollRightEvt.</summary>
452 public void On_ScrollRightEvt(EventArgs e)
456 evt = (EventHandler)eventHandlers[ScrollRightEvtKey];
458 evt?.Invoke(this, e);
460 Efl.EventCb evt_ScrollRightEvt_delegate;
461 private void on_ScrollRightEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
463 EventArgs args = EventArgs.Empty;
465 On_ScrollRightEvt(args);
466 } catch (Exception e) {
467 Eina.Log.Error(e.ToString());
468 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
472 private static object EdgeUpEvtKey = new object();
473 /// <summary>Called when hitting the top edge</summary>
474 public event EventHandler EdgeUpEvt
478 string key = "_EFL_UI_EVENT_EDGE_UP";
479 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_EdgeUpEvt_delegate)) {
480 eventHandlers.AddHandler(EdgeUpEvtKey , value);
482 Eina.Log.Error($"Error adding proxy for event {key}");
487 string key = "_EFL_UI_EVENT_EDGE_UP";
488 if (RemoveNativeEventHandler(key, this.evt_EdgeUpEvt_delegate)) {
489 eventHandlers.RemoveHandler(EdgeUpEvtKey , value);
491 Eina.Log.Error($"Error removing proxy for event {key}");
495 ///<summary>Method to raise event EdgeUpEvt.</summary>
496 public void On_EdgeUpEvt(EventArgs e)
500 evt = (EventHandler)eventHandlers[EdgeUpEvtKey];
502 evt?.Invoke(this, e);
504 Efl.EventCb evt_EdgeUpEvt_delegate;
505 private void on_EdgeUpEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
507 EventArgs args = EventArgs.Empty;
510 } catch (Exception e) {
511 Eina.Log.Error(e.ToString());
512 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
516 private static object EdgeDownEvtKey = new object();
517 /// <summary>Called when hitting the bottom edge</summary>
518 public event EventHandler EdgeDownEvt
522 string key = "_EFL_UI_EVENT_EDGE_DOWN";
523 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_EdgeDownEvt_delegate)) {
524 eventHandlers.AddHandler(EdgeDownEvtKey , value);
526 Eina.Log.Error($"Error adding proxy for event {key}");
531 string key = "_EFL_UI_EVENT_EDGE_DOWN";
532 if (RemoveNativeEventHandler(key, this.evt_EdgeDownEvt_delegate)) {
533 eventHandlers.RemoveHandler(EdgeDownEvtKey , value);
535 Eina.Log.Error($"Error removing proxy for event {key}");
539 ///<summary>Method to raise event EdgeDownEvt.</summary>
540 public void On_EdgeDownEvt(EventArgs e)
544 evt = (EventHandler)eventHandlers[EdgeDownEvtKey];
546 evt?.Invoke(this, e);
548 Efl.EventCb evt_EdgeDownEvt_delegate;
549 private void on_EdgeDownEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
551 EventArgs args = EventArgs.Empty;
553 On_EdgeDownEvt(args);
554 } catch (Exception e) {
555 Eina.Log.Error(e.ToString());
556 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
560 private static object EdgeLeftEvtKey = new object();
561 /// <summary>Called when hitting the left edge</summary>
562 public event EventHandler EdgeLeftEvt
566 string key = "_EFL_UI_EVENT_EDGE_LEFT";
567 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_EdgeLeftEvt_delegate)) {
568 eventHandlers.AddHandler(EdgeLeftEvtKey , value);
570 Eina.Log.Error($"Error adding proxy for event {key}");
575 string key = "_EFL_UI_EVENT_EDGE_LEFT";
576 if (RemoveNativeEventHandler(key, this.evt_EdgeLeftEvt_delegate)) {
577 eventHandlers.RemoveHandler(EdgeLeftEvtKey , value);
579 Eina.Log.Error($"Error removing proxy for event {key}");
583 ///<summary>Method to raise event EdgeLeftEvt.</summary>
584 public void On_EdgeLeftEvt(EventArgs e)
588 evt = (EventHandler)eventHandlers[EdgeLeftEvtKey];
590 evt?.Invoke(this, e);
592 Efl.EventCb evt_EdgeLeftEvt_delegate;
593 private void on_EdgeLeftEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
595 EventArgs args = EventArgs.Empty;
597 On_EdgeLeftEvt(args);
598 } catch (Exception e) {
599 Eina.Log.Error(e.ToString());
600 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
604 private static object EdgeRightEvtKey = new object();
605 /// <summary>Called when hitting the right edge</summary>
606 public event EventHandler EdgeRightEvt
610 string key = "_EFL_UI_EVENT_EDGE_RIGHT";
611 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_EdgeRightEvt_delegate)) {
612 eventHandlers.AddHandler(EdgeRightEvtKey , value);
614 Eina.Log.Error($"Error adding proxy for event {key}");
619 string key = "_EFL_UI_EVENT_EDGE_RIGHT";
620 if (RemoveNativeEventHandler(key, this.evt_EdgeRightEvt_delegate)) {
621 eventHandlers.RemoveHandler(EdgeRightEvtKey , value);
623 Eina.Log.Error($"Error removing proxy for event {key}");
627 ///<summary>Method to raise event EdgeRightEvt.</summary>
628 public void On_EdgeRightEvt(EventArgs e)
632 evt = (EventHandler)eventHandlers[EdgeRightEvtKey];
634 evt?.Invoke(this, e);
636 Efl.EventCb evt_EdgeRightEvt_delegate;
637 private void on_EdgeRightEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
639 EventArgs args = EventArgs.Empty;
641 On_EdgeRightEvt(args);
642 } catch (Exception e) {
643 Eina.Log.Error(e.ToString());
644 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
648 private static object ScrollAnimStartEvtKey = new object();
649 /// <summary>Called when scroll animation starts</summary>
650 public event EventHandler ScrollAnimStartEvt
654 string key = "_EFL_UI_EVENT_SCROLL_ANIM_START";
655 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_ScrollAnimStartEvt_delegate)) {
656 eventHandlers.AddHandler(ScrollAnimStartEvtKey , value);
658 Eina.Log.Error($"Error adding proxy for event {key}");
663 string key = "_EFL_UI_EVENT_SCROLL_ANIM_START";
664 if (RemoveNativeEventHandler(key, this.evt_ScrollAnimStartEvt_delegate)) {
665 eventHandlers.RemoveHandler(ScrollAnimStartEvtKey , value);
667 Eina.Log.Error($"Error removing proxy for event {key}");
671 ///<summary>Method to raise event ScrollAnimStartEvt.</summary>
672 public void On_ScrollAnimStartEvt(EventArgs e)
676 evt = (EventHandler)eventHandlers[ScrollAnimStartEvtKey];
678 evt?.Invoke(this, e);
680 Efl.EventCb evt_ScrollAnimStartEvt_delegate;
681 private void on_ScrollAnimStartEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
683 EventArgs args = EventArgs.Empty;
685 On_ScrollAnimStartEvt(args);
686 } catch (Exception e) {
687 Eina.Log.Error(e.ToString());
688 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
692 private static object ScrollAnimStopEvtKey = new object();
693 /// <summary>Called when scroll animation stopps</summary>
694 public event EventHandler ScrollAnimStopEvt
698 string key = "_EFL_UI_EVENT_SCROLL_ANIM_STOP";
699 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_ScrollAnimStopEvt_delegate)) {
700 eventHandlers.AddHandler(ScrollAnimStopEvtKey , value);
702 Eina.Log.Error($"Error adding proxy for event {key}");
707 string key = "_EFL_UI_EVENT_SCROLL_ANIM_STOP";
708 if (RemoveNativeEventHandler(key, this.evt_ScrollAnimStopEvt_delegate)) {
709 eventHandlers.RemoveHandler(ScrollAnimStopEvtKey , value);
711 Eina.Log.Error($"Error removing proxy for event {key}");
715 ///<summary>Method to raise event ScrollAnimStopEvt.</summary>
716 public void On_ScrollAnimStopEvt(EventArgs e)
720 evt = (EventHandler)eventHandlers[ScrollAnimStopEvtKey];
722 evt?.Invoke(this, e);
724 Efl.EventCb evt_ScrollAnimStopEvt_delegate;
725 private void on_ScrollAnimStopEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
727 EventArgs args = EventArgs.Empty;
729 On_ScrollAnimStopEvt(args);
730 } catch (Exception e) {
731 Eina.Log.Error(e.ToString());
732 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
736 private static object ScrollDragStartEvtKey = new object();
737 /// <summary>Called when scroll drag starts</summary>
738 public event EventHandler ScrollDragStartEvt
742 string key = "_EFL_UI_EVENT_SCROLL_DRAG_START";
743 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_ScrollDragStartEvt_delegate)) {
744 eventHandlers.AddHandler(ScrollDragStartEvtKey , value);
746 Eina.Log.Error($"Error adding proxy for event {key}");
751 string key = "_EFL_UI_EVENT_SCROLL_DRAG_START";
752 if (RemoveNativeEventHandler(key, this.evt_ScrollDragStartEvt_delegate)) {
753 eventHandlers.RemoveHandler(ScrollDragStartEvtKey , value);
755 Eina.Log.Error($"Error removing proxy for event {key}");
759 ///<summary>Method to raise event ScrollDragStartEvt.</summary>
760 public void On_ScrollDragStartEvt(EventArgs e)
764 evt = (EventHandler)eventHandlers[ScrollDragStartEvtKey];
766 evt?.Invoke(this, e);
768 Efl.EventCb evt_ScrollDragStartEvt_delegate;
769 private void on_ScrollDragStartEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
771 EventArgs args = EventArgs.Empty;
773 On_ScrollDragStartEvt(args);
774 } catch (Exception e) {
775 Eina.Log.Error(e.ToString());
776 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
780 private static object ScrollDragStopEvtKey = new object();
781 /// <summary>Called when scroll drag stops</summary>
782 public event EventHandler ScrollDragStopEvt
786 string key = "_EFL_UI_EVENT_SCROLL_DRAG_STOP";
787 if (AddNativeEventHandler(efl.Libs.Efl, key, this.evt_ScrollDragStopEvt_delegate)) {
788 eventHandlers.AddHandler(ScrollDragStopEvtKey , value);
790 Eina.Log.Error($"Error adding proxy for event {key}");
795 string key = "_EFL_UI_EVENT_SCROLL_DRAG_STOP";
796 if (RemoveNativeEventHandler(key, this.evt_ScrollDragStopEvt_delegate)) {
797 eventHandlers.RemoveHandler(ScrollDragStopEvtKey , value);
799 Eina.Log.Error($"Error removing proxy for event {key}");
803 ///<summary>Method to raise event ScrollDragStopEvt.</summary>
804 public void On_ScrollDragStopEvt(EventArgs e)
808 evt = (EventHandler)eventHandlers[ScrollDragStopEvtKey];
810 evt?.Invoke(this, e);
812 Efl.EventCb evt_ScrollDragStopEvt_delegate;
813 private void on_ScrollDragStopEvt_NativeCallback(System.IntPtr data, ref Efl.Event.NativeStruct evt)
815 EventArgs args = EventArgs.Empty;
817 On_ScrollDragStopEvt(args);
818 } catch (Exception e) {
819 Eina.Log.Error(e.ToString());
820 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
824 ///<summary>Register the Eo event wrappers making the bridge to C# events. Internal usage only.</summary>
825 void RegisterEventProxies()
827 evt_ScrollStartEvt_delegate = new Efl.EventCb(on_ScrollStartEvt_NativeCallback);
828 evt_ScrollEvt_delegate = new Efl.EventCb(on_ScrollEvt_NativeCallback);
829 evt_ScrollStopEvt_delegate = new Efl.EventCb(on_ScrollStopEvt_NativeCallback);
830 evt_ScrollUpEvt_delegate = new Efl.EventCb(on_ScrollUpEvt_NativeCallback);
831 evt_ScrollDownEvt_delegate = new Efl.EventCb(on_ScrollDownEvt_NativeCallback);
832 evt_ScrollLeftEvt_delegate = new Efl.EventCb(on_ScrollLeftEvt_NativeCallback);
833 evt_ScrollRightEvt_delegate = new Efl.EventCb(on_ScrollRightEvt_NativeCallback);
834 evt_EdgeUpEvt_delegate = new Efl.EventCb(on_EdgeUpEvt_NativeCallback);
835 evt_EdgeDownEvt_delegate = new Efl.EventCb(on_EdgeDownEvt_NativeCallback);
836 evt_EdgeLeftEvt_delegate = new Efl.EventCb(on_EdgeLeftEvt_NativeCallback);
837 evt_EdgeRightEvt_delegate = new Efl.EventCb(on_EdgeRightEvt_NativeCallback);
838 evt_ScrollAnimStartEvt_delegate = new Efl.EventCb(on_ScrollAnimStartEvt_NativeCallback);
839 evt_ScrollAnimStopEvt_delegate = new Efl.EventCb(on_ScrollAnimStopEvt_NativeCallback);
840 evt_ScrollDragStartEvt_delegate = new Efl.EventCb(on_ScrollDragStartEvt_NativeCallback);
841 evt_ScrollDragStopEvt_delegate = new Efl.EventCb(on_ScrollDragStopEvt_NativeCallback);
843 private static IntPtr GetEflClassStatic()
845 return Efl.Ui.IScrollableConcrete.efl_ui_scrollable_interface_get();
848 public class IScrollableNativeInherit : Efl.Eo.NativeClass{
849 public static Efl.Eo.NativeModule _Module = new Efl.Eo.NativeModule(efl.Libs.Efl);
850 public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type)
852 var descs = new System.Collections.Generic.List<Efl_Op_Description>();
853 var methods = Efl.Eo.Globals.GetUserMethods(type);
856 public override IntPtr GetEflClass()
858 return Efl.Ui.IScrollableConcrete.efl_ui_scrollable_interface_get();
860 public static IntPtr GetEflClassStatic()
862 return Efl.Ui.IScrollableConcrete.efl_ui_scrollable_interface_get();
866 namespace Efl { namespace Ui {
867 /// <summary>Direction in which a scroller should be blocked.
868 /// Note: These options may be effective only in case of thumbscroll (i.e. when scrolling by dragging).</summary>
869 public enum ScrollBlock
871 /// <summary>Don't block any movement.</summary>
873 /// <summary>Block vertical movement.</summary>
875 /// <summary>Block horizontal movement.</summary>