1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 12:28:22 +01:00

added ability to enable/disable individual WMTabViewItems

This commit is contained in:
dan
2002-03-14 12:28:52 +00:00
parent 84fa789cd6
commit 65e65c4e9d
3 changed files with 40 additions and 19 deletions

View File

@@ -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:

View File

@@ -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);

View File

@@ -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)