Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/xwt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Xwt.XamMac/Xwt.Mac.CellViews/CellViewBackend.cs')
-rw-r--r--Xwt.XamMac/Xwt.Mac.CellViews/CellViewBackend.cs75
1 files changed, 44 insertions, 31 deletions
diff --git a/Xwt.XamMac/Xwt.Mac.CellViews/CellViewBackend.cs b/Xwt.XamMac/Xwt.Mac.CellViews/CellViewBackend.cs
index b7b3d9a6..6418facf 100644
--- a/Xwt.XamMac/Xwt.Mac.CellViews/CellViewBackend.cs
+++ b/Xwt.XamMac/Xwt.Mac.CellViews/CellViewBackend.cs
@@ -30,79 +30,92 @@ namespace Xwt.Mac
{
public class CellViewBackend: ICellViewBackend, ICanvasCellViewBackend
{
- NSTableView table;
- int column;
+ WidgetEvent enabledEvents;
public CellViewBackend (NSTableView table, int column)
{
- this.table = table;
- this.column = column;
+ Table = table;
+ Column = column;
}
- public ICellViewFrontend Frontend { get; private set; }
-
public virtual void InitializeBackend (object frontend, ApplicationContext context)
{
Frontend = (ICellViewFrontend)frontend;
+ Context = context;
}
- public NSCell CurrentCell { get; set; }
+ public ICellViewFrontend Frontend { get; private set; }
- public int Column {
- get {
- return column;
- }
- }
+ public ICellViewEventSink EventSink { get; private set; }
- public int CurrentRow { get; set; }
+ public ApplicationContext Context { get; private set; }
- internal ITablePosition CurrentPosition { get; set; }
+ internal NSView CurrentCellView { get; private set; }
+ public int Column { get; private set; }
+
+ public NSTableView Table { get; internal set; }
+
+ internal ITablePosition CurrentPosition { get; private set; }
+
+ internal void Load (ICellRenderer cell)
+ {
+ CurrentCellView = (NSView)cell;
+ CurrentPosition = cell.CellContainer.TablePosition;
+ EventSink = Frontend.Load (cell.CellContainer);
+ }
+
public virtual void EnableEvent (object eventId)
{
+ if (eventId is WidgetEvent)
+ enabledEvents |= (WidgetEvent)eventId;
}
-
+
public virtual void DisableEvent (object eventId)
{
+ if (eventId is WidgetEvent)
+ enabledEvents &= ~(WidgetEvent)eventId;
+ }
+
+ public bool GetIsEventEnabled (WidgetEvent eventId)
+ {
+ return enabledEvents.HasFlag (eventId);
}
public void QueueDraw ()
{
- // nothing to be done here, NSTableView should handle this
+ CurrentCellView.NeedsDisplay = true;
+ }
+
+ public void QueueResize ()
+ {
+ CurrentCellView.NeedsDisplay = true;
+ ((ICellRenderer)CurrentCellView).CellContainer.InvalidateRowHeight ();
}
public Rectangle CellBounds {
get {
- if (CurrentPosition is TableRow) {
- var r = table.GetCellFrame (column, ((TableRow)CurrentPosition).Row);
- r = ((ICellRenderer)CurrentCell).CellContainer.GetCellRect (r, CurrentCell);
- return new Rectangle (r.X, r.Y, r.Width, r.Height);
- }
- return Rectangle.Zero;
+ return CurrentCellView.ConvertRectToView (CurrentCellView.Frame, Table).ToXwtRect ();
}
}
public Rectangle BackgroundBounds {
get {
- // TODO
- return CellBounds;
+ return CurrentCellView.ConvertRectToView (CurrentCellView.Frame, ((ICellRenderer)CurrentCellView).CellContainer.Superview).ToXwtRect ();
}
}
public bool Selected {
get {
- if (CurrentPosition is TableRow) {
- return table.IsRowSelected (((TableRow)CurrentPosition).Row);
- }
- // TODO
- return false;
+ if (CurrentPosition is TableRow)
+ return Table.IsRowSelected (((TableRow)CurrentPosition).Row);
+ return Table.IsRowSelected (Table.RowForView (CurrentCellView));
}
}
public bool HasFocus {
get {
- // TODO
- return false;
+ return CurrentCellView?.Window != null && CurrentCellView.Window.FirstResponder == CurrentCellView;
}
}