Skip to content

Commit adfa141

Browse files
authored
Merge pull request #2574 from eng-myousif/mo_youssef/enable_styling_document_control_tabs
Add capability for styling DocumentControl tabs
2 parents 16f4a08 + 2b57282 commit adfa141

File tree

4 files changed

+310
-22
lines changed

4 files changed

+310
-22
lines changed

src/Eto.Gtk/Forms/Controls/DocumentControlHandler.cs

+6
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,12 @@ void SetShowTabs()
148148

149149
internal void ClosePage(Gtk.Widget control, DocumentPage page)
150150
{
151+
var args = new DocumentPageClosingEventArgs(page);
152+
Callback.OnPageClosing(Widget, args);
153+
154+
if (args.Cancel)
155+
return;
156+
151157
Control.RemovePage(Control.PageNum(control));
152158
SetShowTabs();
153159

src/Eto/Forms/Controls/DocumentControl.cs

+54
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,27 @@ public DocumentPageEventArgs(DocumentPage page)
2121
}
2222
}
2323

24+
/// <summary>
25+
/// Arguments for the <see cref="DocumentControl"/> to get the current page.
26+
/// </summary>
27+
public class DocumentPageClosingEventArgs : CancelEventArgs
28+
{
29+
/// <summary>
30+
/// Gets the document page.
31+
/// </summary>
32+
/// <value>The document page.</value>
33+
public DocumentPage Page { get; private set; }
34+
35+
/// <summary>
36+
/// Initializes a new instance of the <see cref="T:Eto.Forms.DocumentPageClosingEventArgs"/> class.
37+
/// </summary>
38+
/// <param name="page">Page.</param>
39+
public DocumentPageClosingEventArgs(DocumentPage page)
40+
{
41+
Page = page;
42+
}
43+
}
44+
2445
/// <summary>
2546
/// Arguments for the <see cref="DocumentControl"/> when reordering pages.
2647
/// </summary>
@@ -70,6 +91,7 @@ public class DocumentControl : Container
7091
public override IEnumerable<Control> Controls => pages ?? Enumerable.Empty<Control>();
7192

7293
static readonly object PageClosedEvent = new object();
94+
static readonly object PageClosingEvent = new object();
7395
static readonly object SelectedIndexChangedEvent = new object();
7496

7597
/// <summary>
@@ -86,6 +108,15 @@ public event EventHandler<DocumentPageEventArgs> PageClosed
86108
remove { Properties.RemoveEvent(PageClosedEvent, value); }
87109
}
88110

111+
/// <summary>
112+
/// Occurs when the <see cref="DocumentPage"/> is closing.
113+
/// </summary>
114+
public event EventHandler<DocumentPageClosingEventArgs> PageClosing
115+
{
116+
add { Properties.AddEvent(PageClosingEvent, value); }
117+
remove { Properties.RemoveEvent(PageClosingEvent, value); }
118+
}
119+
89120
/// <summary>
90121
/// Occurs when the <see cref="SelectedIndex"/> is changed.
91122
/// </summary>
@@ -116,6 +147,15 @@ protected virtual void OnPageClosed(DocumentPageEventArgs e)
116147
page.TriggerClose(e);
117148
}
118149

150+
/// <summary>
151+
/// Raises the <see cref="PageClosing"/> event.
152+
/// </summary>
153+
/// <param name="e">Event arguments.</param>
154+
protected virtual void OnPageClosing(DocumentPageClosingEventArgs e)
155+
{
156+
Properties.TriggerEvent(PageClosingEvent, this, e);
157+
}
158+
119159
/// <summary>
120160
/// Raises the <see cref="SelectedIndexChanged"/> event.
121161
/// </summary>
@@ -350,6 +390,11 @@ IEnumerator IEnumerable.GetEnumerator()
350390
/// </summary>
351391
void OnPageClosed(DocumentControl widget, DocumentPageEventArgs e);
352392

393+
/// <summary>
394+
/// Raises the page closing event.
395+
/// </summary>
396+
void OnPageClosing(DocumentControl widget, DocumentPageClosingEventArgs e);
397+
353398
/// <summary>
354399
/// Raises the selected index changed event.
355400
/// </summary>
@@ -375,6 +420,15 @@ public void OnPageClosed(DocumentControl widget, DocumentPageEventArgs e)
375420
widget.OnPageClosed(e);
376421
}
377422

423+
/// <summary>
424+
/// Raises the page closing event.
425+
/// </summary>
426+
public void OnPageClosing(DocumentControl widget, DocumentPageClosingEventArgs e)
427+
{
428+
using (widget.Platform.Context)
429+
widget.OnPageClosing(e);
430+
}
431+
378432
/// <summary>
379433
/// Raises the page reordered event.
380434
/// </summary>

0 commit comments

Comments
 (0)