@@ -25,27 +25,46 @@ public void PopDrawContext(MarkupNode node, MarkupDrawingContext context) { }
2525
2626 public bool TryCreateControl ( MarkupNode node , [ NotNullWhen ( true ) ] out Control ? control )
2727 {
28+ var hasField = TryGetSignatureField ( node , out var field ) ;
29+
2830 var btn = new Button
2931 {
30- Text = Loc . GetString ( "paper-signature-sign-button" ) ,
32+ Text = hasField ? field : Loc . GetString ( "paper-signature-sign-button" ) ,
3133 MinSize = new Vector2 ( 48 , PaperTagHelper . FontLineHeight + 4 ) ,
32- MaxSize = new Vector2 ( 48 , PaperTagHelper . FontLineHeight + 4 ) ,
34+ MaxSize = new Vector2 ( 100 , PaperTagHelper . FontLineHeight + 4 ) ,
3335 Margin = new Thickness ( 1 , 2 , 1 , 2 ) ,
3436 StyleClasses = { "ButtonSquare" } ,
3537 TextAlign = Label . AlignMode . Center ,
36- Name = $ "signature_{ _signatureCounter ++ } "
38+ Name = $ "signature_{ ( hasField ? field : _signatureCounter ++ ) } "
3739 } ;
3840
3941 btn . OnPressed += _ =>
4042 {
4143 if ( PaperTagHelper . FindPaperWindow ( btn ) is { } paperWindow )
4244 {
43- var buttonIndex = PaperTagHelper . CountButtonsBefore ( btn , b => b . Text == Loc . GetString ( "paper-signature-sign-button" ) ) ;
44- paperWindow . SendSignatureRequest ( buttonIndex ) ;
45+ if ( hasField )
46+ {
47+ paperWindow . SendFieldSignatureRequest ( field ?? "" ) ; // It won't be null here... but appeasing the editor.
48+ }
49+ else
50+ {
51+ var buttonIndex = PaperTagHelper . CountButtonsBefore ( btn , b => b . Text == Loc . GetString ( "paper-signature-sign-button" ) ) ;
52+ paperWindow . SendSignatureRequest ( buttonIndex ) ;
53+ }
4554 }
4655 } ;
4756
4857 control = btn ;
4958 return true ;
5059 }
60+
61+ private bool TryGetSignatureField ( MarkupNode node , [ NotNullWhen ( true ) ] out string ? field )
62+ {
63+ field = null ;
64+ if ( node . Value . TryGetString ( out field ) )
65+ {
66+ return ! string . IsNullOrWhiteSpace ( field ) ;
67+ }
68+ return false ;
69+ }
5170}
0 commit comments