Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2f85640

Browse files
authored
Merge pull request #16710 from yuezhihan/macosgui-resize
Make format_coord messagebox resize with the window and the content in osx backend
2 parents a00fdf1 + 42eec1e commit 2f85640

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

src/_macosx.m

100644100755
Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -931,8 +931,9 @@ - (void)save_figure:(id)sender;
931931
typedef 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

Comments
 (0)