Skip to content

Commit 06c32a5

Browse files
author
Robert Soliday
committed
Fixed a deiconization problem on macOS. Also implemented patches from Shuei Yamada (KEK) to fix two buffer overflows.
1 parent b4727a4 commit 06c32a5

File tree

4 files changed

+40
-7
lines changed

4 files changed

+40
-7
lines changed

medm/medm.c

+35-2
Original file line numberDiff line numberDiff line change
@@ -765,6 +765,32 @@ void requestDestroy(request_t *request) {
765765
#endif
766766
#endif
767767

768+
769+
void IconifyMe (dpy, win)
770+
Display *dpy;
771+
Window win; /* toplevel window to iconify */
772+
{
773+
Atom xa_WM_CHANGE_STATE;
774+
XClientMessageEvent ev;
775+
776+
xa_WM_CHANGE_STATE = XInternAtom (dpy,
777+
"WM_CHANGE_STATE", False);
778+
779+
ev.type = ClientMessage;
780+
ev.display = dpy;
781+
ev.message_type = xa_WM_CHANGE_STATE;
782+
ev.format = 32;
783+
ev.data.l[0] = IconicState;
784+
ev.window = win;
785+
786+
XSendEvent (dpy,
787+
RootWindow (dpy, DefaultScreen(dpy)),
788+
True,
789+
(SubstructureRedirectMask | SubstructureNotifyMask),
790+
&ev);
791+
XFlush (dpy);
792+
}
793+
768794
request_t * parseCommandLine(int argc, char *argv[]) {
769795
int i;
770796
int argsUsed = 0;
@@ -3025,7 +3051,7 @@ DisplayInfo* parseDisplayFile(char *filename) {
30253051
/**************************************************************************/
30263052
int main(int argc, char *argv[])
30273053
{
3028-
int i = 0, n = 0, index = 0;
3054+
int i = 0, n = 0, index = 0, iconify=0;
30293055
Arg args[5];
30303056
FILE *filePtr;
30313057
XColor color;
@@ -3514,7 +3540,8 @@ int main(int argc, char *argv[])
35143540
} else if(request->opMode == EXECUTE) {
35153541
globalDisplayListTraversalMode = DL_EXECUTE;
35163542
if(request->fileCnt > 0) { /* assume .adl file names follow */
3517-
XtVaSetValues(mainShell, XmNinitialState, IconicState, NULL);
3543+
//XtVaSetValues(mainShell, XmNinitialState, IconicState, NULL);
3544+
iconify=1;
35183545
}
35193546
/* Start the scheduler */
35203547
startMedmScheduler();
@@ -3747,6 +3774,12 @@ int main(int argc, char *argv[])
37473774
/* Get CDE workspace list */
37483775
GetWorkSpaceList(mainMW);
37493776
#endif
3777+
if (iconify) {
3778+
//IconifyMe(display, XtWindow(mainShell));
3779+
XIconifyWindow(display, XtWindow(mainShell), screenNum);
3780+
3781+
}
3782+
37503783

37513784
/* Go into event loop
37523785
* Normally just XtAppMainLoop(appContext)

medm/medmRelatedDisplay.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ void executeDlRelatedDisplay(DisplayInfo *displayInfo, DlElement *dlElement)
468468
dlRelatedDisplay->visual == RD_COL_OF_BTN) {
469469
/* Case 3 of 4 */
470470
/* Rows or columns of buttons */
471-
Arg wargs[20];
471+
Arg wargs[MAX_RELATED_DISPLAYS+16];
472472
int i = 0, maxChars = 0, usedWidth = 0, usedHeight = 0;
473473
XmFontList fontList;
474474
Pixel fg, bg;

medm/medmVersion.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
*/
6868
#define MEDM_VERSION 3
6969
#define MEDM_REVISION 1
70-
#define MEDM_MODIFICATION 13
70+
#define MEDM_MODIFICATION 14
7171
#define MEDM_PATCH_LEVEL 0
72-
#define MEDM_VERSION_STRING "MEDM Version 3.1.13"
73-
#define MEDM_VERSION_DIGITS "MEDM030113"
72+
#define MEDM_VERSION_STRING "MEDM Version 3.1.14"
73+
#define MEDM_VERSION_DIGITS "MEDM030114"

medm/resourcePalette.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ static void optionMenuSimpleCallback(Widget w, XtPointer cd, XtPointer cbs)
189189
{
190190
DisplayInfo *cdi = currentDisplayInfo;
191191
int buttonId = (intptr_t)cd;
192-
int rcType;
192+
long rcType;
193193
DlElement *elementPtr;
194194

195195
UNREFERENCED(cbs);

0 commit comments

Comments
 (0)