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 [ScrollableNativeInherit]
10 public interface Scrollable :
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 ScrollableConcrete :
50 ///<summary>Pointer to the native class description.</summary>
51 public System.IntPtr NativeClass {
53 if (((object)this).GetType() == typeof (ScrollableConcrete))
54 return Efl.Ui.ScrollableNativeInherit.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 public ScrollableConcrete(System.IntPtr raw)
71 register_event_proxies();
73 ///<summary>Destructor.</summary>
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>Casts obj into an instance of this type.</summary>
93 public static ScrollableConcrete static_cast(Efl.Object obj)
96 throw new System.ArgumentNullException("obj");
97 return new ScrollableConcrete(obj.NativeHandle);
99 ///<summary>Verifies if the given object is equal to this one.</summary>
100 public override bool Equals(object obj)
102 var other = obj as Efl.Object;
105 return this.NativeHandle == other.NativeHandle;
107 ///<summary>Gets the hash code for this object based on the native pointer it points to.</summary>
108 public override int GetHashCode()
110 return this.NativeHandle.ToInt32();
112 ///<summary>Turns the native pointer into a string representation.</summary>
113 public override String ToString()
115 return $"{this.GetType().Name}@[{this.NativeHandle.ToInt32():x}]";
117 private readonly object eventLock = new object();
118 private Dictionary<string, int> event_cb_count = new Dictionary<string, int>();
119 private bool add_cpp_event_handler(string lib, string key, Efl.EventCb evt_delegate) {
121 if (!event_cb_count.TryGetValue(key, out event_count))
122 event_cb_count[key] = event_count;
123 if (event_count == 0) {
124 IntPtr desc = Efl.EventDescription.GetNative(lib, key);
125 if (desc == IntPtr.Zero) {
126 Eina.Log.Error($"Failed to get native event {key}");
129 bool result = Efl.Eo.Globals.efl_event_callback_priority_add(handle, desc, 0, evt_delegate, System.IntPtr.Zero);
131 Eina.Log.Error($"Failed to add event proxy for event {key}");
134 Eina.Error.RaiseIfUnhandledException();
136 event_cb_count[key]++;
139 private bool remove_cpp_event_handler(string key, Efl.EventCb evt_delegate) {
141 if (!event_cb_count.TryGetValue(key, out event_count))
142 event_cb_count[key] = event_count;
143 if (event_count == 1) {
144 IntPtr desc = Efl.EventDescription.GetNative(efl.Libs.Efl, key);
145 if (desc == IntPtr.Zero) {
146 Eina.Log.Error($"Failed to get native event {key}");
149 bool result = Efl.Eo.Globals.efl_event_callback_del(handle, desc, evt_delegate, System.IntPtr.Zero);
151 Eina.Log.Error($"Failed to remove event proxy for event {key}");
154 Eina.Error.RaiseIfUnhandledException();
155 } else if (event_count == 0) {
156 Eina.Log.Error($"Trying to remove proxy for event {key} when there is nothing registered.");
159 event_cb_count[key]--;
162 private static object ScrollStartEvtKey = new object();
163 /// <summary>Called when scroll operation starts</summary>
164 public event EventHandler ScrollStartEvt
168 string key = "_EFL_UI_EVENT_SCROLL_START";
169 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_ScrollStartEvt_delegate)) {
170 eventHandlers.AddHandler(ScrollStartEvtKey , value);
172 Eina.Log.Error($"Error adding proxy for event {key}");
177 string key = "_EFL_UI_EVENT_SCROLL_START";
178 if (remove_cpp_event_handler(key, this.evt_ScrollStartEvt_delegate)) {
179 eventHandlers.RemoveHandler(ScrollStartEvtKey , value);
181 Eina.Log.Error($"Error removing proxy for event {key}");
185 ///<summary>Method to raise event ScrollStartEvt.</summary>
186 public void On_ScrollStartEvt(EventArgs e)
190 evt = (EventHandler)eventHandlers[ScrollStartEvtKey];
192 evt?.Invoke(this, e);
194 Efl.EventCb evt_ScrollStartEvt_delegate;
195 private void on_ScrollStartEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
197 EventArgs args = EventArgs.Empty;
199 On_ScrollStartEvt(args);
200 } catch (Exception e) {
201 Eina.Log.Error(e.ToString());
202 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
206 private static object ScrollEvtKey = new object();
207 /// <summary>Called when scrolling</summary>
208 public event EventHandler ScrollEvt
212 string key = "_EFL_UI_EVENT_SCROLL";
213 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_ScrollEvt_delegate)) {
214 eventHandlers.AddHandler(ScrollEvtKey , value);
216 Eina.Log.Error($"Error adding proxy for event {key}");
221 string key = "_EFL_UI_EVENT_SCROLL";
222 if (remove_cpp_event_handler(key, this.evt_ScrollEvt_delegate)) {
223 eventHandlers.RemoveHandler(ScrollEvtKey , value);
225 Eina.Log.Error($"Error removing proxy for event {key}");
229 ///<summary>Method to raise event ScrollEvt.</summary>
230 public void On_ScrollEvt(EventArgs e)
234 evt = (EventHandler)eventHandlers[ScrollEvtKey];
236 evt?.Invoke(this, e);
238 Efl.EventCb evt_ScrollEvt_delegate;
239 private void on_ScrollEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
241 EventArgs args = EventArgs.Empty;
244 } catch (Exception e) {
245 Eina.Log.Error(e.ToString());
246 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
250 private static object ScrollStopEvtKey = new object();
251 /// <summary>Called when scroll operation stops</summary>
252 public event EventHandler ScrollStopEvt
256 string key = "_EFL_UI_EVENT_SCROLL_STOP";
257 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_ScrollStopEvt_delegate)) {
258 eventHandlers.AddHandler(ScrollStopEvtKey , value);
260 Eina.Log.Error($"Error adding proxy for event {key}");
265 string key = "_EFL_UI_EVENT_SCROLL_STOP";
266 if (remove_cpp_event_handler(key, this.evt_ScrollStopEvt_delegate)) {
267 eventHandlers.RemoveHandler(ScrollStopEvtKey , value);
269 Eina.Log.Error($"Error removing proxy for event {key}");
273 ///<summary>Method to raise event ScrollStopEvt.</summary>
274 public void On_ScrollStopEvt(EventArgs e)
278 evt = (EventHandler)eventHandlers[ScrollStopEvtKey];
280 evt?.Invoke(this, e);
282 Efl.EventCb evt_ScrollStopEvt_delegate;
283 private void on_ScrollStopEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
285 EventArgs args = EventArgs.Empty;
287 On_ScrollStopEvt(args);
288 } catch (Exception e) {
289 Eina.Log.Error(e.ToString());
290 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
294 private static object ScrollUpEvtKey = new object();
295 /// <summary>Called when scrolling upwards</summary>
296 public event EventHandler ScrollUpEvt
300 string key = "_EFL_UI_EVENT_SCROLL_UP";
301 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_ScrollUpEvt_delegate)) {
302 eventHandlers.AddHandler(ScrollUpEvtKey , value);
304 Eina.Log.Error($"Error adding proxy for event {key}");
309 string key = "_EFL_UI_EVENT_SCROLL_UP";
310 if (remove_cpp_event_handler(key, this.evt_ScrollUpEvt_delegate)) {
311 eventHandlers.RemoveHandler(ScrollUpEvtKey , value);
313 Eina.Log.Error($"Error removing proxy for event {key}");
317 ///<summary>Method to raise event ScrollUpEvt.</summary>
318 public void On_ScrollUpEvt(EventArgs e)
322 evt = (EventHandler)eventHandlers[ScrollUpEvtKey];
324 evt?.Invoke(this, e);
326 Efl.EventCb evt_ScrollUpEvt_delegate;
327 private void on_ScrollUpEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
329 EventArgs args = EventArgs.Empty;
331 On_ScrollUpEvt(args);
332 } catch (Exception e) {
333 Eina.Log.Error(e.ToString());
334 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
338 private static object ScrollDownEvtKey = new object();
339 /// <summary>Called when scrolling downwards</summary>
340 public event EventHandler ScrollDownEvt
344 string key = "_EFL_UI_EVENT_SCROLL_DOWN";
345 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_ScrollDownEvt_delegate)) {
346 eventHandlers.AddHandler(ScrollDownEvtKey , value);
348 Eina.Log.Error($"Error adding proxy for event {key}");
353 string key = "_EFL_UI_EVENT_SCROLL_DOWN";
354 if (remove_cpp_event_handler(key, this.evt_ScrollDownEvt_delegate)) {
355 eventHandlers.RemoveHandler(ScrollDownEvtKey , value);
357 Eina.Log.Error($"Error removing proxy for event {key}");
361 ///<summary>Method to raise event ScrollDownEvt.</summary>
362 public void On_ScrollDownEvt(EventArgs e)
366 evt = (EventHandler)eventHandlers[ScrollDownEvtKey];
368 evt?.Invoke(this, e);
370 Efl.EventCb evt_ScrollDownEvt_delegate;
371 private void on_ScrollDownEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
373 EventArgs args = EventArgs.Empty;
375 On_ScrollDownEvt(args);
376 } catch (Exception e) {
377 Eina.Log.Error(e.ToString());
378 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
382 private static object ScrollLeftEvtKey = new object();
383 /// <summary>Called when scrolling left</summary>
384 public event EventHandler ScrollLeftEvt
388 string key = "_EFL_UI_EVENT_SCROLL_LEFT";
389 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_ScrollLeftEvt_delegate)) {
390 eventHandlers.AddHandler(ScrollLeftEvtKey , value);
392 Eina.Log.Error($"Error adding proxy for event {key}");
397 string key = "_EFL_UI_EVENT_SCROLL_LEFT";
398 if (remove_cpp_event_handler(key, this.evt_ScrollLeftEvt_delegate)) {
399 eventHandlers.RemoveHandler(ScrollLeftEvtKey , value);
401 Eina.Log.Error($"Error removing proxy for event {key}");
405 ///<summary>Method to raise event ScrollLeftEvt.</summary>
406 public void On_ScrollLeftEvt(EventArgs e)
410 evt = (EventHandler)eventHandlers[ScrollLeftEvtKey];
412 evt?.Invoke(this, e);
414 Efl.EventCb evt_ScrollLeftEvt_delegate;
415 private void on_ScrollLeftEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
417 EventArgs args = EventArgs.Empty;
419 On_ScrollLeftEvt(args);
420 } catch (Exception e) {
421 Eina.Log.Error(e.ToString());
422 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
426 private static object ScrollRightEvtKey = new object();
427 /// <summary>Called when scrolling right</summary>
428 public event EventHandler ScrollRightEvt
432 string key = "_EFL_UI_EVENT_SCROLL_RIGHT";
433 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_ScrollRightEvt_delegate)) {
434 eventHandlers.AddHandler(ScrollRightEvtKey , value);
436 Eina.Log.Error($"Error adding proxy for event {key}");
441 string key = "_EFL_UI_EVENT_SCROLL_RIGHT";
442 if (remove_cpp_event_handler(key, this.evt_ScrollRightEvt_delegate)) {
443 eventHandlers.RemoveHandler(ScrollRightEvtKey , value);
445 Eina.Log.Error($"Error removing proxy for event {key}");
449 ///<summary>Method to raise event ScrollRightEvt.</summary>
450 public void On_ScrollRightEvt(EventArgs e)
454 evt = (EventHandler)eventHandlers[ScrollRightEvtKey];
456 evt?.Invoke(this, e);
458 Efl.EventCb evt_ScrollRightEvt_delegate;
459 private void on_ScrollRightEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
461 EventArgs args = EventArgs.Empty;
463 On_ScrollRightEvt(args);
464 } catch (Exception e) {
465 Eina.Log.Error(e.ToString());
466 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
470 private static object EdgeUpEvtKey = new object();
471 /// <summary>Called when hitting the top edge</summary>
472 public event EventHandler EdgeUpEvt
476 string key = "_EFL_UI_EVENT_EDGE_UP";
477 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_EdgeUpEvt_delegate)) {
478 eventHandlers.AddHandler(EdgeUpEvtKey , value);
480 Eina.Log.Error($"Error adding proxy for event {key}");
485 string key = "_EFL_UI_EVENT_EDGE_UP";
486 if (remove_cpp_event_handler(key, this.evt_EdgeUpEvt_delegate)) {
487 eventHandlers.RemoveHandler(EdgeUpEvtKey , value);
489 Eina.Log.Error($"Error removing proxy for event {key}");
493 ///<summary>Method to raise event EdgeUpEvt.</summary>
494 public void On_EdgeUpEvt(EventArgs e)
498 evt = (EventHandler)eventHandlers[EdgeUpEvtKey];
500 evt?.Invoke(this, e);
502 Efl.EventCb evt_EdgeUpEvt_delegate;
503 private void on_EdgeUpEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
505 EventArgs args = EventArgs.Empty;
508 } catch (Exception e) {
509 Eina.Log.Error(e.ToString());
510 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
514 private static object EdgeDownEvtKey = new object();
515 /// <summary>Called when hitting the bottom edge</summary>
516 public event EventHandler EdgeDownEvt
520 string key = "_EFL_UI_EVENT_EDGE_DOWN";
521 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_EdgeDownEvt_delegate)) {
522 eventHandlers.AddHandler(EdgeDownEvtKey , value);
524 Eina.Log.Error($"Error adding proxy for event {key}");
529 string key = "_EFL_UI_EVENT_EDGE_DOWN";
530 if (remove_cpp_event_handler(key, this.evt_EdgeDownEvt_delegate)) {
531 eventHandlers.RemoveHandler(EdgeDownEvtKey , value);
533 Eina.Log.Error($"Error removing proxy for event {key}");
537 ///<summary>Method to raise event EdgeDownEvt.</summary>
538 public void On_EdgeDownEvt(EventArgs e)
542 evt = (EventHandler)eventHandlers[EdgeDownEvtKey];
544 evt?.Invoke(this, e);
546 Efl.EventCb evt_EdgeDownEvt_delegate;
547 private void on_EdgeDownEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
549 EventArgs args = EventArgs.Empty;
551 On_EdgeDownEvt(args);
552 } catch (Exception e) {
553 Eina.Log.Error(e.ToString());
554 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
558 private static object EdgeLeftEvtKey = new object();
559 /// <summary>Called when hitting the left edge</summary>
560 public event EventHandler EdgeLeftEvt
564 string key = "_EFL_UI_EVENT_EDGE_LEFT";
565 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_EdgeLeftEvt_delegate)) {
566 eventHandlers.AddHandler(EdgeLeftEvtKey , value);
568 Eina.Log.Error($"Error adding proxy for event {key}");
573 string key = "_EFL_UI_EVENT_EDGE_LEFT";
574 if (remove_cpp_event_handler(key, this.evt_EdgeLeftEvt_delegate)) {
575 eventHandlers.RemoveHandler(EdgeLeftEvtKey , value);
577 Eina.Log.Error($"Error removing proxy for event {key}");
581 ///<summary>Method to raise event EdgeLeftEvt.</summary>
582 public void On_EdgeLeftEvt(EventArgs e)
586 evt = (EventHandler)eventHandlers[EdgeLeftEvtKey];
588 evt?.Invoke(this, e);
590 Efl.EventCb evt_EdgeLeftEvt_delegate;
591 private void on_EdgeLeftEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
593 EventArgs args = EventArgs.Empty;
595 On_EdgeLeftEvt(args);
596 } catch (Exception e) {
597 Eina.Log.Error(e.ToString());
598 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
602 private static object EdgeRightEvtKey = new object();
603 /// <summary>Called when hitting the right edge</summary>
604 public event EventHandler EdgeRightEvt
608 string key = "_EFL_UI_EVENT_EDGE_RIGHT";
609 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_EdgeRightEvt_delegate)) {
610 eventHandlers.AddHandler(EdgeRightEvtKey , value);
612 Eina.Log.Error($"Error adding proxy for event {key}");
617 string key = "_EFL_UI_EVENT_EDGE_RIGHT";
618 if (remove_cpp_event_handler(key, this.evt_EdgeRightEvt_delegate)) {
619 eventHandlers.RemoveHandler(EdgeRightEvtKey , value);
621 Eina.Log.Error($"Error removing proxy for event {key}");
625 ///<summary>Method to raise event EdgeRightEvt.</summary>
626 public void On_EdgeRightEvt(EventArgs e)
630 evt = (EventHandler)eventHandlers[EdgeRightEvtKey];
632 evt?.Invoke(this, e);
634 Efl.EventCb evt_EdgeRightEvt_delegate;
635 private void on_EdgeRightEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
637 EventArgs args = EventArgs.Empty;
639 On_EdgeRightEvt(args);
640 } catch (Exception e) {
641 Eina.Log.Error(e.ToString());
642 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
646 private static object ScrollAnimStartEvtKey = new object();
647 /// <summary>Called when scroll animation starts</summary>
648 public event EventHandler ScrollAnimStartEvt
652 string key = "_EFL_UI_EVENT_SCROLL_ANIM_START";
653 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_ScrollAnimStartEvt_delegate)) {
654 eventHandlers.AddHandler(ScrollAnimStartEvtKey , value);
656 Eina.Log.Error($"Error adding proxy for event {key}");
661 string key = "_EFL_UI_EVENT_SCROLL_ANIM_START";
662 if (remove_cpp_event_handler(key, this.evt_ScrollAnimStartEvt_delegate)) {
663 eventHandlers.RemoveHandler(ScrollAnimStartEvtKey , value);
665 Eina.Log.Error($"Error removing proxy for event {key}");
669 ///<summary>Method to raise event ScrollAnimStartEvt.</summary>
670 public void On_ScrollAnimStartEvt(EventArgs e)
674 evt = (EventHandler)eventHandlers[ScrollAnimStartEvtKey];
676 evt?.Invoke(this, e);
678 Efl.EventCb evt_ScrollAnimStartEvt_delegate;
679 private void on_ScrollAnimStartEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
681 EventArgs args = EventArgs.Empty;
683 On_ScrollAnimStartEvt(args);
684 } catch (Exception e) {
685 Eina.Log.Error(e.ToString());
686 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
690 private static object ScrollAnimStopEvtKey = new object();
691 /// <summary>Called when scroll animation stopps</summary>
692 public event EventHandler ScrollAnimStopEvt
696 string key = "_EFL_UI_EVENT_SCROLL_ANIM_STOP";
697 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_ScrollAnimStopEvt_delegate)) {
698 eventHandlers.AddHandler(ScrollAnimStopEvtKey , value);
700 Eina.Log.Error($"Error adding proxy for event {key}");
705 string key = "_EFL_UI_EVENT_SCROLL_ANIM_STOP";
706 if (remove_cpp_event_handler(key, this.evt_ScrollAnimStopEvt_delegate)) {
707 eventHandlers.RemoveHandler(ScrollAnimStopEvtKey , value);
709 Eina.Log.Error($"Error removing proxy for event {key}");
713 ///<summary>Method to raise event ScrollAnimStopEvt.</summary>
714 public void On_ScrollAnimStopEvt(EventArgs e)
718 evt = (EventHandler)eventHandlers[ScrollAnimStopEvtKey];
720 evt?.Invoke(this, e);
722 Efl.EventCb evt_ScrollAnimStopEvt_delegate;
723 private void on_ScrollAnimStopEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
725 EventArgs args = EventArgs.Empty;
727 On_ScrollAnimStopEvt(args);
728 } catch (Exception e) {
729 Eina.Log.Error(e.ToString());
730 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
734 private static object ScrollDragStartEvtKey = new object();
735 /// <summary>Called when scroll drag starts</summary>
736 public event EventHandler ScrollDragStartEvt
740 string key = "_EFL_UI_EVENT_SCROLL_DRAG_START";
741 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_ScrollDragStartEvt_delegate)) {
742 eventHandlers.AddHandler(ScrollDragStartEvtKey , value);
744 Eina.Log.Error($"Error adding proxy for event {key}");
749 string key = "_EFL_UI_EVENT_SCROLL_DRAG_START";
750 if (remove_cpp_event_handler(key, this.evt_ScrollDragStartEvt_delegate)) {
751 eventHandlers.RemoveHandler(ScrollDragStartEvtKey , value);
753 Eina.Log.Error($"Error removing proxy for event {key}");
757 ///<summary>Method to raise event ScrollDragStartEvt.</summary>
758 public void On_ScrollDragStartEvt(EventArgs e)
762 evt = (EventHandler)eventHandlers[ScrollDragStartEvtKey];
764 evt?.Invoke(this, e);
766 Efl.EventCb evt_ScrollDragStartEvt_delegate;
767 private void on_ScrollDragStartEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
769 EventArgs args = EventArgs.Empty;
771 On_ScrollDragStartEvt(args);
772 } catch (Exception e) {
773 Eina.Log.Error(e.ToString());
774 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
778 private static object ScrollDragStopEvtKey = new object();
779 /// <summary>Called when scroll drag stops</summary>
780 public event EventHandler ScrollDragStopEvt
784 string key = "_EFL_UI_EVENT_SCROLL_DRAG_STOP";
785 if (add_cpp_event_handler(efl.Libs.Efl, key, this.evt_ScrollDragStopEvt_delegate)) {
786 eventHandlers.AddHandler(ScrollDragStopEvtKey , value);
788 Eina.Log.Error($"Error adding proxy for event {key}");
793 string key = "_EFL_UI_EVENT_SCROLL_DRAG_STOP";
794 if (remove_cpp_event_handler(key, this.evt_ScrollDragStopEvt_delegate)) {
795 eventHandlers.RemoveHandler(ScrollDragStopEvtKey , value);
797 Eina.Log.Error($"Error removing proxy for event {key}");
801 ///<summary>Method to raise event ScrollDragStopEvt.</summary>
802 public void On_ScrollDragStopEvt(EventArgs e)
806 evt = (EventHandler)eventHandlers[ScrollDragStopEvtKey];
808 evt?.Invoke(this, e);
810 Efl.EventCb evt_ScrollDragStopEvt_delegate;
811 private void on_ScrollDragStopEvt_NativeCallback(System.IntPtr data, ref Efl.Event_StructInternal evt)
813 EventArgs args = EventArgs.Empty;
815 On_ScrollDragStopEvt(args);
816 } catch (Exception e) {
817 Eina.Log.Error(e.ToString());
818 Eina.Error.Set(Eina.Error.UNHANDLED_EXCEPTION);
822 void register_event_proxies()
824 evt_ScrollStartEvt_delegate = new Efl.EventCb(on_ScrollStartEvt_NativeCallback);
825 evt_ScrollEvt_delegate = new Efl.EventCb(on_ScrollEvt_NativeCallback);
826 evt_ScrollStopEvt_delegate = new Efl.EventCb(on_ScrollStopEvt_NativeCallback);
827 evt_ScrollUpEvt_delegate = new Efl.EventCb(on_ScrollUpEvt_NativeCallback);
828 evt_ScrollDownEvt_delegate = new Efl.EventCb(on_ScrollDownEvt_NativeCallback);
829 evt_ScrollLeftEvt_delegate = new Efl.EventCb(on_ScrollLeftEvt_NativeCallback);
830 evt_ScrollRightEvt_delegate = new Efl.EventCb(on_ScrollRightEvt_NativeCallback);
831 evt_EdgeUpEvt_delegate = new Efl.EventCb(on_EdgeUpEvt_NativeCallback);
832 evt_EdgeDownEvt_delegate = new Efl.EventCb(on_EdgeDownEvt_NativeCallback);
833 evt_EdgeLeftEvt_delegate = new Efl.EventCb(on_EdgeLeftEvt_NativeCallback);
834 evt_EdgeRightEvt_delegate = new Efl.EventCb(on_EdgeRightEvt_NativeCallback);
835 evt_ScrollAnimStartEvt_delegate = new Efl.EventCb(on_ScrollAnimStartEvt_NativeCallback);
836 evt_ScrollAnimStopEvt_delegate = new Efl.EventCb(on_ScrollAnimStopEvt_NativeCallback);
837 evt_ScrollDragStartEvt_delegate = new Efl.EventCb(on_ScrollDragStartEvt_NativeCallback);
838 evt_ScrollDragStopEvt_delegate = new Efl.EventCb(on_ScrollDragStopEvt_NativeCallback);
841 public class ScrollableNativeInherit : Efl.Eo.NativeClass{
842 public static Efl.Eo.NativeModule _Module = new Efl.Eo.NativeModule(efl.Libs.Efl);
843 public override System.Collections.Generic.List<Efl_Op_Description> GetEoOps(System.Type type)
845 var descs = new System.Collections.Generic.List<Efl_Op_Description>();
848 public override IntPtr GetEflClass()
850 return Efl.Ui.ScrollableConcrete.efl_ui_scrollable_interface_get();
852 public static IntPtr GetEflClassStatic()
854 return Efl.Ui.ScrollableConcrete.efl_ui_scrollable_interface_get();
858 namespace Efl { namespace Ui {
859 /// <summary>Direction in which a scroller should be blocked.
860 /// Note: These options may be effective only in case of thumbscroll (i.e. when scrolling by dragging).
862 public enum ScrollBlock
864 /// <summary>Don't block any movement.</summary>
866 /// <summary>Block vertical movement.</summary>
868 /// <summary>Block horizontal movement.</summary>