Tk-OS2src
view release on metacpan or search on metacpan
patches/diff_tkos2_800_05a view on Meta::CPAN
@@ -333,8 +346,50 @@ WmInfo *wmPtr;
}
}
+
+TkWindow *
+TkpGetWrapperWindow(TkWindow *winPtr) {
+ return winPtr->wmInfoPtr->reparent ?
+ (TkWindow*) ((TkOS2Drawable*)winPtr->wmInfoPtr->reparent)->window.winPtr
+ : winPtr;
+}
+
+void
+CreateMenubar(Tk_Window menubar, Tk_Window winPtr)
+{
+ WmInfo *wmPtr = ((TkWindow*)winPtr)->wmInfoPtr;
+ TkWindow *menubarPtr = (TkWindow *) menubar;
+ int ret;
-
+#if 0
+ XReparentWindow(Tk_Display(menubar), Tk_WindowId(menubar),
+ wmPtr->wrapperPtr->window, 0, 0);
+#else
+ ret = WinSetParent(TkOS2GetHWND(menubarPtr->window),
+ TkOS2GetHWND(wmPtr->reparent), TRUE);
+# ifdef DEBUG
+ if (ret != TRUE) {
+ printf("WinSetParent menubar c %x, p %x ERROR %x\n", TkOS2GetHWND(menubarPtr->window),
+ TkOS2GetHWND(wmPtr->reparent),
+ WinGetLastError(hab));
+ } else {
+ printf("WinSetParent menubar c %x, p %x OK\n", TkOS2GetHWND(menubarPtr->window),
+ TkOS2GetHWND(wmPtr->reparent));
+ }
+# endif
+#endif
+ menubarPtr->wmInfoPtr = wmPtr;
+ Tk_MoveResizeWindow(menubar, wmPtr->xInParent,
+ /* wmPtr->yInParent is for the main subwindow. */
+ wmPtr->yInParent - wmPtr->menuHeight,
+ Tk_Width(winPtr), wmPtr->menuHeight);
+ Tk_MapWindow(menubar);
+ Tk_CreateEventHandler(menubar, StructureNotifyMask, MenubarDestroyProc,
+ (ClientData) menubar);
+ Tk_ManageGeometry(menubar, &menubarMgrType, (ClientData) wmPtr);
+ menubarPtr->flags |= TK_REPARENTED;
+ wmPtr->flags |= ~WM_MB_NEVER_MAPPED;
+}
/*
*--------------------------------------------------------------
@@ -374,7 +429,7 @@ TkWmMapWindow(winPtr)
#endif
if (wmPtr->flags & WM_NEVER_MAPPED) {
- int x, y, width, height;
+ int x, y, width, height, yInParent;
TkOS2Drawable *parentPtr;
HWND frame = NULLHANDLE;
FRAMECDATA fcdata;
@@ -481,8 +536,13 @@ TkWmMapWindow(winPtr)
wmPtr->borderHeight);
#endif
}
+
+ yInParent = wmPtr->yInParent;
+ wmPtr->yInParent += wmPtr->menuHeight;
+
if (wmPtr->exStyle & FCF_TITLEBAR) {
wmPtr->borderHeight += titleBar;
+ wmPtr->yInParent += titleBar;
#ifdef DEBUG
printf("FCF_TITLEBAR: bH now %d\n", wmPtr->borderHeight);
#endif
@@ -497,7 +557,8 @@ TkWmMapWindow(winPtr)
wmPtr->flags &= ~(WM_CREATE_PENDING|WM_MOVE_PENDING);
width = wmPtr->borderWidth + winPtr->changes.width;
- height = wmPtr->borderHeight + winPtr->changes.height;
+ height = wmPtr->borderHeight + winPtr->changes.height
+ + wmPtr->menuHeight;
#ifdef DEBUG
printf("+ height %d -> %d\n", winPtr->changes.height, height);
#endif
@@ -631,10 +692,14 @@ TkWmMapWindow(winPtr)
printf(" wmPtr->xInParent %d, wmPtr->yInParent %d\n",
wmPtr->xInParent, wmPtr->yInParent);
#endif
- WinSetWindowPos(child, HWND_TOP, wmPtr->xInParent, wmPtr->yInParent,
+ WinSetWindowPos(child, HWND_TOP, wmPtr->xInParent, yInParent,
winPtr->changes.width, winPtr->changes.height,
SWP_SIZE | SWP_MOVE | SWP_SHOW);
+ /* Now process menubar: */
+ if (wmPtr->menubar)
+ CreateMenubar(wmPtr->menubar, winPtr);
+
/*
* Generate a reparent event.
*/
@@ -662,6 +727,9 @@ TkWmMapWindow(winPtr)
}
UpdateGeometryInfo((ClientData) winPtr);
+ if ((wmPtr->flags & WM_MB_NEVER_MAPPED) && wmPtr->menubar)
+ CreateMenubar(wmPtr->menubar, winPtr);
+
/* If applicable, make visible in switch-list */
if (wmPtr->exStyle & FCF_TASKLIST) {
HSWITCH hSwitch;
@@ -688,9 +756,9 @@ TkWmMapWindow(winPtr)
rc = WinChangeSwitchEntry(hSwitch, &switchData);
#ifdef DEBUG
if (rc != 0) {
- printf("WinChangeSwitchEntry ERROR %x\n", WinGetLastError(hab));
+ printf("WinChangeSwitchEntry ON ERROR %x\n", WinGetLastError(hab));
} else {
- printf("WinChangeSwitchEntry %x OK\n", hSwitch);
+ printf("WinChangeSwitchEntry ON %x OK\n", hSwitch);
}
( run in 2.374 seconds using v1.01-cache-2.11-cpan-6aa56a78535 )