From 65e65c4e9d29284b7c4d14ceb65d26c8212e7659 Mon Sep 17 00:00:00 2001 From: dan Date: Thu, 14 Mar 2002 12:28:52 +0000 Subject: [PATCH] added ability to enable/disable individual WMTabViewItems --- WINGs/ChangeLog | 1 + WINGs/WINGs/WINGs.h | 2 ++ WINGs/wtabview.c | 56 +++++++++++++++++++++++++++++++++++------------------ 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/WINGs/ChangeLog b/WINGs/ChangeLog index 1850724a..fb30c007 100644 --- a/WINGs/ChangeLog +++ b/WINGs/ChangeLog @@ -11,6 +11,7 @@ Changes since wmaker 0.80.0: about arranging subviews after removing one and a memleak occuring in the same case. - Fixed WMGetViewScreenPosition() to consider the window decorations. +- Added ability to enable/disable individual WMTableViewItems. Changes since wmaker 0.70.0: diff --git a/WINGs/WINGs/WINGs.h b/WINGs/WINGs/WINGs.h index c9810bfe..87b0785f 100644 --- a/WINGs/WINGs/WINGs.h +++ b/WINGs/WINGs/WINGs.h @@ -1701,6 +1701,8 @@ void WMSetTabViewDelegate(WMTabView *tPtr, WMTabViewDelegate *delegate); WMTabViewItem* WMCreateTabViewItemWithIdentifier(int identifier); +void WMSetTabViewItemEnabled(WMTabViewItem *tPtr, Bool flag); + int WMGetTabViewItemIdentifier(WMTabViewItem *item); void WMSetTabViewItemLabel(WMTabViewItem *item, char *label); diff --git a/WINGs/wtabview.c b/WINGs/wtabview.c index 3cad8c8a..4113b72b 100644 --- a/WINGs/wtabview.c +++ b/WINGs/wtabview.c @@ -38,6 +38,23 @@ typedef struct W_TabView { } TabView; +typedef struct W_TabViewItem { + WMTabView *tabView; + + W_View *view; + + char *label; + + short tabWidth; + int identifier; + + struct { + unsigned visible:1; + unsigned enabled:1; + } flags; +} W_TabViewItem; + + @@ -150,7 +167,10 @@ handleEvents(XEvent *event, void *data) WMTabViewItem *item = WMTabViewItemAtPoint(tPtr, event->xbutton.x, event->xbutton.y); - if (item) { + /*if (item && !item->flags.enabled) + break;*/ + + if (item && item->flags.enabled) { WMSelectTabViewItem(tPtr, item); } else if (tPtr->flags.dontFitAll) { int redraw = 0; @@ -256,7 +276,7 @@ WMAddItemInTabView(WMTabView *tPtr, WMTabViewItem *item) void WMSetTabViewEnabled(WMTabView *tPtr, Bool flag) { - tPtr->flags.enabled = flag; + tPtr->flags.enabled = (flag ? 1 : 0); if (W_VIEW_REALIZED(tPtr->view)) paintTabView(tPtr); } @@ -749,7 +769,8 @@ paintTabView(TabView *tPtr) rect.size.width = W_TabViewItemTabWidth(tPtr->items[first+i]); rect.size.height = theight; W_DrawLabel(tPtr->items[first+i], buffer, rect, - tPtr->flags.enabled); + tPtr->flags.enabled && + tPtr->items[first+i]->flags.enabled); } if (moreAtLeft) { @@ -846,22 +867,6 @@ destroyTabView(TabView *tPtr) /******************************************************************/ -typedef struct W_TabViewItem { - WMTabView *tabView; - - W_View *view; - - char *label; - - short tabWidth; - int identifier; - - struct { - unsigned visible:1; - } flags; -} TabViewItem; - - static void W_SetTabViewItemParent(WMTabViewItem *item, WMTabView *parent) { @@ -937,6 +942,8 @@ WMCreateTabViewItemWithIdentifier(int identifier) item->identifier = identifier; + item->flags.enabled = 1; + return item; } @@ -950,12 +957,23 @@ WMCreateTabViewItem(int identifier, char *label) memset(item, 0, sizeof(WMTabViewItem)); item->identifier = identifier; + + item->flags.enabled = 1; + WMSetTabViewItemLabel(item, label); return item; } +void +WMSetTabViewItemEnabled(WMTabViewItem *tPtr, Bool flag) +{ + tPtr->flags.enabled = (flag ? 1 : 0); + if (tPtr->tabView && W_VIEW_REALIZED(tPtr->tabView->view)) + paintTabView(tPtr->tabView); +} + int WMGetTabViewItemIdentifier(WMTabViewItem *item) -- 2.11.4.GIT