@@ -931,8 +931,9 @@ - (void)save_figure:(id)sender;
931931typedef struct {
932932 PyObject_HEAD
933933 NSPopUpButton * menu;
934- NSText * messagebox;
934+ NSTextView * messagebox;
935935 NavigationToolbar2Handler* handler;
936+ int height;
936937} NavigationToolbar2;
937938
938939@implementation NavigationToolbar2Handler
@@ -1139,7 +1140,9 @@ -(void)save_figure:(id)sender
11391140 const float gap = 2 ;
11401141 const int height = 36 ;
11411142 const int imagesize = 24 ;
1142-
1143+
1144+ self->height = height;
1145+
11431146 const char * basedir;
11441147
11451148 obj = PyObject_GetAttrString ((PyObject*)self, " canvas" );
@@ -1252,7 +1255,9 @@ -(void)save_figure:(id)sender
12521255 rect.size .width = 300 ;
12531256 rect.size .height = 0 ;
12541257 rect.origin .x += height;
1255- NSText * messagebox = [[NSText alloc ] initWithFrame: rect];
1258+ NSTextView * messagebox = [[NSTextView alloc ] initWithFrame: rect];
1259+ messagebox.textContainer .maximumNumberOfLines = 2 ;
1260+ messagebox.textContainer .lineBreakMode = NSLineBreakByTruncatingTail;
12561261 [messagebox setFont: font];
12571262 [messagebox setDrawsBackground: NO ];
12581263 [messagebox setSelectable: NO ];
@@ -1294,12 +1299,26 @@ -(void)save_figure:(id)sender
12941299
12951300 if (!PyArg_ParseTuple (args, " y" , &message)) return NULL ;
12961301
1297- NSText * messagebox = self->messagebox ;
1302+ NSTextView * messagebox = self->messagebox ;
12981303
12991304 if (messagebox)
13001305 { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc ] init ];
13011306 NSString * text = [NSString stringWithUTF8String: message];
13021307 [messagebox setString: text];
1308+
1309+ // Adjust width with the window size
1310+ NSRect rectWindow = [messagebox.superview frame ];
1311+ NSRect rect = [messagebox frame ];
1312+ rect.size .width = rectWindow.size .width - rect.origin .x ;
1313+ [messagebox setFrame: rect];
1314+
1315+ // Adjust height with the content size
1316+ [messagebox.layoutManager ensureLayoutForTextContainer: messagebox.textContainer];
1317+ NSRect contentSize = [messagebox.layoutManager usedRectForTextContainer: messagebox.textContainer];
1318+ rect = [messagebox frame ];
1319+ rect.origin .y = 0.5 * (self->height - contentSize.size .height );
1320+ [messagebox setFrame: rect];
1321+
13031322 [pool release ];
13041323 }
13051324
0 commit comments