From bb6acdad3c06055060c203e539ac3f2d496a03fd Mon Sep 17 00:00:00 2001 From: kojima Date: Fri, 14 Jul 2000 15:16:46 +0000 Subject: [PATCH] added close button to editable menu --- WPrefs.app/editmenu.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/WPrefs.app/editmenu.c b/WPrefs.app/editmenu.c index 8b0c8f8d..def507e3 100644 --- a/WPrefs.app/editmenu.c +++ b/WPrefs.app/editmenu.c @@ -61,6 +61,8 @@ typedef struct W_EditMenu { WMTextField *tfield; + WMButton *closeB; + int titleHeight; int itemHeight; @@ -639,10 +641,35 @@ WGetEditMenuLocationForSubmenu(WEditMenu *mPtr, WEditMenu *submenu) } + +static void +closeMenuAction(WMWidget *w, void *data) +{ + WEditMenu *menu = (WEditMenu*)data; + + WMAddIdleHandler(WMDestroyWidget, menu->closeB); + menu->closeB = NULL; + + WMUnmapWidget(menu); +} + + void WTearOffEditMenu(WEditMenu *menu, WEditMenu *submenu) { + WEditMenuItem *item; + submenu->flags.isTornOff = 1; + + item = (WEditMenuItem*)WMGetFromBag(submenu->items, 0); + + submenu->closeB = WMCreateCommandButton(item); + WMResizeWidget(submenu->closeB, 15, 15); + WMMoveWidget(submenu->closeB, W_VIEW(submenu)->size.width - 20, 3); + WMRealizeWidget(submenu->closeB); + WMSetButtonText(submenu->closeB, "X"); + WMSetButtonAction(submenu->closeB, closeMenuAction, submenu); + WMMapWidget(submenu->closeB); if (menu->selectedItem && menu->selectedItem->submenu == submenu) deselectItem(menu); @@ -686,7 +713,7 @@ updateMenuContents(WEditMenu *mPtr) i = 1; } - newW += iheight + 5; + newW += iheight + 10; newH--; if (mPtr->minSize.width)