blob: 5dc613d7c0b5fa04bd46cb60cd6769056c60531c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
using Xwt.Backends;
using System;
using Xwt.Drawing;
namespace Xwt.GtkBackend
{
public partial class PasswordEntryBackend : WidgetBackend, IPasswordEntryBackend
{
public override void Initialize ()
{
Widget = new Gtk.Entry ();
Widget.Show ();
Widget.Visibility = false;
}
protected new Gtk.Entry Widget {
get { return (Gtk.Entry)base.Widget; }
set { base.Widget = value; }
}
protected new IPasswordEntryEventSink EventSink {
get { return (IPasswordEntryEventSink)base.EventSink; }
}
public string Password {
get { return Widget.Text; }
set { Widget.Text = value ?? ""; } // null value causes GTK error
}
public System.Security.SecureString SecurePassword {
get {
var text = Widget.Text;
unsafe {
fixed (char *ptr = text) {
return new System.Security.SecureString (ptr, text.Length);
}
}
}
}
public override Color BackgroundColor {
get {
return base.BackgroundColor;
}
set {
base.BackgroundColor = value;
Widget.ModifyBase (Gtk.StateType.Normal, value.ToGtkValue ());
}
}
public override void EnableEvent (object eventId)
{
base.EnableEvent (eventId);
if (eventId is PasswordEntryEvent) {
switch ((PasswordEntryEvent)eventId) {
case PasswordEntryEvent.Changed: Widget.Changed += HandleChanged; break;
case PasswordEntryEvent.Activated: Widget.Activated += HandleActivated; break;
}
}
}
public override void DisableEvent (object eventId)
{
base.DisableEvent (eventId);
if (eventId is PasswordEntryEvent) {
switch ((PasswordEntryEvent)eventId) {
case PasswordEntryEvent.Changed: Widget.Changed -= HandleChanged; break;
case PasswordEntryEvent.Activated: Widget.Activated -= HandleActivated; break;
}
}
}
void HandleChanged (object sender, EventArgs e)
{
ApplicationContext.InvokeUserCode (EventSink.OnChanged);
}
void HandleActivated (object sender, EventArgs e)
{
ApplicationContext.InvokeUserCode (EventSink.OnActivated);
}
}
}
|