mirror of
https://github.com/gryf/wmaker.git
synced 2026-01-06 22:04:12 +01:00
changed indentation to use spaces only
This commit is contained in:
653
WINGs/wtabview.c
653
WINGs/wtabview.c
@@ -12,7 +12,7 @@ typedef struct W_TabView {
|
||||
|
||||
int selectedItem;
|
||||
int firstVisible;
|
||||
|
||||
|
||||
int visibleTabs;
|
||||
|
||||
WMFont *font;
|
||||
@@ -25,15 +25,15 @@ typedef struct W_TabView {
|
||||
short tabHeight;
|
||||
|
||||
struct {
|
||||
WMReliefType relief:4;
|
||||
WMTitlePosition titlePosition:4;
|
||||
WMTabViewType type:2;
|
||||
WMReliefType relief:4;
|
||||
WMTitlePosition titlePosition:4;
|
||||
WMTabViewType type:2;
|
||||
|
||||
unsigned enabled:1;
|
||||
unsigned tabbed:1;
|
||||
unsigned dontFitAll:1;
|
||||
unsigned bordered:1;
|
||||
unsigned uniformTabs:1;
|
||||
unsigned enabled:1;
|
||||
unsigned tabbed:1;
|
||||
unsigned dontFitAll:1;
|
||||
unsigned bordered:1;
|
||||
unsigned uniformTabs:1;
|
||||
} flags;
|
||||
} TabView;
|
||||
|
||||
@@ -66,14 +66,14 @@ typedef struct W_TabViewItem {
|
||||
#define BUTTONED_SIDE_OFFSET 15
|
||||
|
||||
|
||||
static void destroyTabView(TabView *tPtr);
|
||||
static void destroyTabView(TabView *tPtr);
|
||||
static void paintTabView(TabView *tPtr);
|
||||
|
||||
|
||||
static void W_SetTabViewItemParent(WMTabViewItem *item, WMTabView *parent);
|
||||
|
||||
static void W_DrawLabel(WMTabViewItem *item, Drawable d, WMRect rect,
|
||||
Bool enabled);
|
||||
Bool enabled);
|
||||
|
||||
static void W_UnmapTabViewItem(WMTabViewItem *item);
|
||||
|
||||
@@ -93,10 +93,10 @@ static void didResize(struct W_ViewDelegate*, WMView*);
|
||||
|
||||
static W_ViewDelegate delegate = {
|
||||
NULL,
|
||||
NULL,
|
||||
didResize,
|
||||
NULL,
|
||||
NULL
|
||||
NULL,
|
||||
didResize,
|
||||
NULL,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
@@ -105,21 +105,21 @@ positionOfTab(WMTabView *tabView, int tab)
|
||||
{
|
||||
int i;
|
||||
int offs;
|
||||
|
||||
|
||||
if (tab < tabView->firstVisible)
|
||||
return -1;
|
||||
|
||||
return -1;
|
||||
|
||||
if (tab > tabView->firstVisible + tabView->visibleTabs)
|
||||
return -1;
|
||||
return -1;
|
||||
|
||||
if (tabView->flags.dontFitAll)
|
||||
offs = BUTTONED_SIDE_OFFSET;
|
||||
offs = BUTTONED_SIDE_OFFSET;
|
||||
else
|
||||
offs = NORMAL_SIDE_OFFSET;
|
||||
|
||||
offs = NORMAL_SIDE_OFFSET;
|
||||
|
||||
for (i = tabView->firstVisible; i < tab; i++)
|
||||
offs += W_TabViewItemTabWidth(tabView->items[i]) - 10;
|
||||
|
||||
offs += W_TabViewItemTabWidth(tabView->items[i]) - 10;
|
||||
|
||||
return offs;
|
||||
}
|
||||
|
||||
@@ -131,17 +131,17 @@ countVisibleTabs(TabView *tPtr, int first)
|
||||
int width;
|
||||
|
||||
if (first < 0) {
|
||||
width = W_VIEW_WIDTH(tPtr->view) - 2 * NORMAL_SIDE_OFFSET;
|
||||
first = 0;
|
||||
width = W_VIEW_WIDTH(tPtr->view) - 2 * NORMAL_SIDE_OFFSET;
|
||||
first = 0;
|
||||
} else {
|
||||
width = W_VIEW_WIDTH(tPtr->view) - 2 * BUTTONED_SIDE_OFFSET;
|
||||
width = W_VIEW_WIDTH(tPtr->view) - 2 * BUTTONED_SIDE_OFFSET;
|
||||
}
|
||||
|
||||
for (i = first; i < tPtr->itemCount; i++) {
|
||||
width -= W_TabViewItemTabWidth(tPtr->items[i]) - 10;
|
||||
if (width <= 0) {
|
||||
return i - first;
|
||||
}
|
||||
width -= W_TabViewItemTabWidth(tPtr->items[i]) - 10;
|
||||
if (width <= 0) {
|
||||
return i - first;
|
||||
}
|
||||
}
|
||||
return i - first;
|
||||
}
|
||||
@@ -156,49 +156,49 @@ handleEvents(XEvent *event, void *data)
|
||||
CHECK_CLASS(data, WC_TabView);
|
||||
|
||||
switch (event->type) {
|
||||
case Expose:
|
||||
if (event->xexpose.count!=0)
|
||||
break;
|
||||
paintTabView(tPtr);
|
||||
break;
|
||||
case Expose:
|
||||
if (event->xexpose.count!=0)
|
||||
break;
|
||||
paintTabView(tPtr);
|
||||
break;
|
||||
|
||||
case ButtonPress:
|
||||
if (tPtr->flags.enabled) {
|
||||
WMTabViewItem *item = WMTabViewItemAtPoint(tPtr,
|
||||
event->xbutton.x,
|
||||
event->xbutton.y);
|
||||
case ButtonPress:
|
||||
if (tPtr->flags.enabled) {
|
||||
WMTabViewItem *item = WMTabViewItemAtPoint(tPtr,
|
||||
event->xbutton.x,
|
||||
event->xbutton.y);
|
||||
/*if (item && !item->flags.enabled)
|
||||
break;*/
|
||||
break;*/
|
||||
|
||||
if (item && item->flags.enabled) {
|
||||
WMSelectTabViewItem(tPtr, item);
|
||||
} else if (tPtr->flags.dontFitAll) {
|
||||
int redraw = 0;
|
||||
int lastVisible = tPtr->firstVisible+tPtr->visibleTabs-1;
|
||||
WMSelectTabViewItem(tPtr, item);
|
||||
} else if (tPtr->flags.dontFitAll) {
|
||||
int redraw = 0;
|
||||
int lastVisible = tPtr->firstVisible+tPtr->visibleTabs-1;
|
||||
|
||||
if (event->xbutton.x < BUTTONED_SIDE_OFFSET) {
|
||||
if (tPtr->firstVisible > 0) {
|
||||
redraw = 1;
|
||||
tPtr->firstVisible--;
|
||||
}
|
||||
} else if (event->xbutton.x > positionOfTab(tPtr,lastVisible)){
|
||||
if (event->xbutton.x < BUTTONED_SIDE_OFFSET) {
|
||||
if (tPtr->firstVisible > 0) {
|
||||
redraw = 1;
|
||||
tPtr->firstVisible--;
|
||||
}
|
||||
} else if (event->xbutton.x > positionOfTab(tPtr,lastVisible)){
|
||||
|
||||
if (lastVisible < tPtr->itemCount-1) {
|
||||
redraw = 1;
|
||||
tPtr->firstVisible++;
|
||||
}
|
||||
}
|
||||
tPtr->visibleTabs = countVisibleTabs(tPtr, tPtr->firstVisible);
|
||||
if (redraw) {
|
||||
paintTabView(tPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
if (lastVisible < tPtr->itemCount-1) {
|
||||
redraw = 1;
|
||||
tPtr->firstVisible++;
|
||||
}
|
||||
}
|
||||
tPtr->visibleTabs = countVisibleTabs(tPtr, tPtr->firstVisible);
|
||||
if (redraw) {
|
||||
paintTabView(tPtr);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case DestroyNotify:
|
||||
destroyTabView(tPtr);
|
||||
break;
|
||||
case DestroyNotify:
|
||||
destroyTabView(tPtr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -217,8 +217,8 @@ WMCreateTabView(WMWidget *parent)
|
||||
|
||||
tPtr->view = W_CreateView(W_VIEW(parent));
|
||||
if (!tPtr->view) {
|
||||
wfree(tPtr);
|
||||
return NULL;
|
||||
wfree(tPtr);
|
||||
return NULL;
|
||||
}
|
||||
tPtr->view->self = tPtr;
|
||||
tPtr->view->delegate = &delegate;
|
||||
@@ -227,14 +227,14 @@ WMCreateTabView(WMWidget *parent)
|
||||
tPtr->tabColor = WMCreateRGBColor(scr, 0x8420, 0x8420, 0x8420, False);
|
||||
|
||||
tPtr->font = WMRetainFont(scr->normalFont);
|
||||
|
||||
|
||||
tPtr->flags.type = WTTopTabsBevelBorder;
|
||||
tPtr->flags.bordered = 1;
|
||||
tPtr->flags.uniformTabs = 0;
|
||||
tPtr->flags.enabled = 1;
|
||||
|
||||
WMCreateEventHandler(tPtr->view, ExposureMask|StructureNotifyMask
|
||||
|ButtonPressMask, handleEvents, tPtr);
|
||||
|ButtonPressMask, handleEvents, tPtr);
|
||||
|
||||
WMResizeWidget(tPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT);
|
||||
|
||||
@@ -253,10 +253,10 @@ WMSetTabViewDelegate(WMTabView *tPtr, WMTabViewDelegate *delegate)
|
||||
|
||||
WMTabViewItem*
|
||||
WMAddTabViewItemWithView(WMTabView *tPtr, WMView *view, int identifier,
|
||||
char *label)
|
||||
char *label)
|
||||
{
|
||||
WMTabViewItem *item;
|
||||
|
||||
|
||||
item = WMCreateTabViewItemWithIdentifier(identifier);
|
||||
WMSetTabViewItemView(item, view);
|
||||
WMAddItemInTabView(tPtr, item);
|
||||
@@ -278,7 +278,7 @@ WMSetTabViewEnabled(WMTabView *tPtr, Bool flag)
|
||||
{
|
||||
tPtr->flags.enabled = ((flag==0) ? 0 : 1);
|
||||
if (W_VIEW_REALIZED(tPtr->view))
|
||||
paintTabView(tPtr);
|
||||
paintTabView(tPtr);
|
||||
}
|
||||
|
||||
|
||||
@@ -288,25 +288,25 @@ WMInsertItemInTabView(WMTabView *tPtr, int index, WMTabViewItem *item)
|
||||
wassertr(W_TabViewItemView(item) != NULL);
|
||||
|
||||
if (tPtr->maxItems == tPtr->itemCount) {
|
||||
WMTabViewItem **items;
|
||||
WMTabViewItem **items;
|
||||
|
||||
items = wrealloc(tPtr->items,
|
||||
sizeof(WMTabViewItem*) * (tPtr->maxItems + 10));
|
||||
memset(&items[tPtr->maxItems], 0, sizeof(WMTabViewItem*) * 10);
|
||||
tPtr->items = items;
|
||||
tPtr->maxItems += 10;
|
||||
items = wrealloc(tPtr->items,
|
||||
sizeof(WMTabViewItem*) * (tPtr->maxItems + 10));
|
||||
memset(&items[tPtr->maxItems], 0, sizeof(WMTabViewItem*) * 10);
|
||||
tPtr->items = items;
|
||||
tPtr->maxItems += 10;
|
||||
}
|
||||
|
||||
if (index > tPtr->itemCount)
|
||||
index = tPtr->itemCount;
|
||||
index = tPtr->itemCount;
|
||||
|
||||
if (index == 0 && tPtr->items[0]) {
|
||||
W_UnmapTabViewItem(tPtr->items[0]);
|
||||
W_UnmapTabViewItem(tPtr->items[0]);
|
||||
}
|
||||
|
||||
if (index < tPtr->itemCount) {
|
||||
memmove(tPtr->items + index + 1, tPtr->items + index,
|
||||
(tPtr->itemCount - index) * sizeof(WMTabViewItem*));
|
||||
memmove(tPtr->items + index + 1, tPtr->items + index,
|
||||
(tPtr->itemCount - index) * sizeof(WMTabViewItem*));
|
||||
}
|
||||
|
||||
tPtr->items[index] = item;
|
||||
@@ -320,27 +320,27 @@ WMInsertItemInTabView(WMTabView *tPtr, int index, WMTabViewItem *item)
|
||||
W_UnmapTabViewItem(item);
|
||||
|
||||
if (tPtr->flags.bordered) {
|
||||
W_ReparentView(W_TabViewItemView(item), tPtr->view, 1,
|
||||
tPtr->tabHeight + 1);
|
||||
W_ReparentView(W_TabViewItemView(item), tPtr->view, 1,
|
||||
tPtr->tabHeight + 1);
|
||||
|
||||
W_ResizeView(W_TabViewItemView(item), tPtr->view->size.width - 3,
|
||||
tPtr->view->size.height - tPtr->tabHeight - 3);
|
||||
W_ResizeView(W_TabViewItemView(item), tPtr->view->size.width - 3,
|
||||
tPtr->view->size.height - tPtr->tabHeight - 3);
|
||||
} else {
|
||||
W_ReparentView(W_TabViewItemView(item), tPtr->view, 0,
|
||||
tPtr->tabHeight);
|
||||
W_ReparentView(W_TabViewItemView(item), tPtr->view, 0,
|
||||
tPtr->tabHeight);
|
||||
|
||||
W_ResizeView(W_TabViewItemView(item), tPtr->view->size.width,
|
||||
tPtr->view->size.height - tPtr->tabHeight);
|
||||
W_ResizeView(W_TabViewItemView(item), tPtr->view->size.width,
|
||||
tPtr->view->size.height - tPtr->tabHeight);
|
||||
}
|
||||
|
||||
if (index == 0) {
|
||||
W_MapTabViewItem(item);
|
||||
W_MapTabViewItem(item);
|
||||
}
|
||||
if (tPtr->delegate && tPtr->delegate->didChangeNumberOfItems)
|
||||
(*tPtr->delegate->didChangeNumberOfItems)(tPtr->delegate, tPtr);
|
||||
|
||||
(*tPtr->delegate->didChangeNumberOfItems)(tPtr->delegate, tPtr);
|
||||
|
||||
if (W_VIEW_REALIZED(tPtr->view))
|
||||
paintTabView(tPtr);
|
||||
paintTabView(tPtr);
|
||||
}
|
||||
|
||||
|
||||
@@ -350,21 +350,21 @@ WMRemoveTabViewItem(WMTabView *tPtr, WMTabViewItem *item)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < tPtr->itemCount; i++) {
|
||||
if (tPtr->items[i] == item) {
|
||||
if (i < tPtr->itemCount - 1)
|
||||
memmove(&tPtr->items[i], &tPtr->items[i + 1],
|
||||
tPtr->itemCount - i - 1);
|
||||
else
|
||||
tPtr->items[i] = NULL;
|
||||
if (tPtr->items[i] == item) {
|
||||
if (i < tPtr->itemCount - 1)
|
||||
memmove(&tPtr->items[i], &tPtr->items[i + 1],
|
||||
tPtr->itemCount - i - 1);
|
||||
else
|
||||
tPtr->items[i] = NULL;
|
||||
|
||||
W_SetTabViewItemParent(item, NULL);
|
||||
W_SetTabViewItemParent(item, NULL);
|
||||
|
||||
tPtr->itemCount--;
|
||||
break;
|
||||
}
|
||||
tPtr->itemCount--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (tPtr->delegate && tPtr->delegate->didChangeNumberOfItems)
|
||||
(*tPtr->delegate->didChangeNumberOfItems)(tPtr->delegate, tPtr);
|
||||
(*tPtr->delegate->didChangeNumberOfItems)(tPtr->delegate, tPtr);
|
||||
}
|
||||
|
||||
|
||||
@@ -373,22 +373,22 @@ static Bool
|
||||
isInside(int x, int y, int width, int height, int px, int py)
|
||||
{
|
||||
if (py >= y + height - 3 && py <= y + height
|
||||
&& px >= x + py - (y + height - 3)
|
||||
&& px <= x + width - (py - (y + height - 3))) {
|
||||
&& px >= x + py - (y + height - 3)
|
||||
&& px <= x + width - (py - (y + height - 3))) {
|
||||
|
||||
return True;
|
||||
return True;
|
||||
}
|
||||
if (py >= y + 3 && py < y + height - 3
|
||||
&& px >= x + 3 + ((y + 3) - py)*3/7
|
||||
&& px <= x + width - 3 - ((y + 3) - py)*3/7) {
|
||||
&& px >= x + 3 + ((y + 3) - py)*3/7
|
||||
&& px <= x + width - 3 - ((y + 3) - py)*3/7) {
|
||||
|
||||
return True;
|
||||
return True;
|
||||
}
|
||||
if (py >= y && py < y + 3
|
||||
&& px >= x + 7 + py - y
|
||||
&& px <= x + width - 7 - (py - y)) {
|
||||
&& px >= x + 7 + py - y
|
||||
&& px <= x + width - 7 - (py - y)) {
|
||||
|
||||
return True;
|
||||
return True;
|
||||
}
|
||||
return False;
|
||||
}
|
||||
@@ -400,32 +400,32 @@ WMTabViewItemAtPoint(WMTabView *tPtr, int x, int y)
|
||||
int i;
|
||||
int count = tPtr->visibleTabs;
|
||||
int first = tPtr->firstVisible;
|
||||
|
||||
|
||||
if (tPtr->flags.dontFitAll) {
|
||||
i = tPtr->selectedItem - tPtr->firstVisible;
|
||||
if (i >= 0 && i < tPtr->visibleTabs
|
||||
&& isInside(positionOfTab(tPtr, tPtr->selectedItem), 0,
|
||||
W_TabViewItemTabWidth(tPtr->items[tPtr->selectedItem]),
|
||||
tPtr->tabHeight, x, y)) {
|
||||
return tPtr->items[tPtr->selectedItem];
|
||||
}
|
||||
i = tPtr->selectedItem - tPtr->firstVisible;
|
||||
if (i >= 0 && i < tPtr->visibleTabs
|
||||
&& isInside(positionOfTab(tPtr, tPtr->selectedItem), 0,
|
||||
W_TabViewItemTabWidth(tPtr->items[tPtr->selectedItem]),
|
||||
tPtr->tabHeight, x, y)) {
|
||||
return tPtr->items[tPtr->selectedItem];
|
||||
}
|
||||
} else {
|
||||
i = tPtr->selectedItem;
|
||||
if (isInside(positionOfTab(tPtr, i), 0,
|
||||
W_TabViewItemTabWidth(tPtr->items[i]),
|
||||
tPtr->tabHeight, x, y)) {
|
||||
return tPtr->items[i];
|
||||
}
|
||||
i = tPtr->selectedItem;
|
||||
if (isInside(positionOfTab(tPtr, i), 0,
|
||||
W_TabViewItemTabWidth(tPtr->items[i]),
|
||||
tPtr->tabHeight, x, y)) {
|
||||
return tPtr->items[i];
|
||||
}
|
||||
}
|
||||
|
||||
for (i = first; i < first + count; i++) {
|
||||
int pos;
|
||||
int pos;
|
||||
|
||||
pos = positionOfTab(tPtr, i);
|
||||
if (isInside(pos, 0, W_TabViewItemTabWidth(tPtr->items[i]),
|
||||
tPtr->tabHeight, x, y)) {
|
||||
return tPtr->items[i];
|
||||
}
|
||||
pos = positionOfTab(tPtr, i);
|
||||
if (isInside(pos, 0, W_TabViewItemTabWidth(tPtr->items[i]),
|
||||
tPtr->tabHeight, x, y)) {
|
||||
return tPtr->items[i];
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -435,17 +435,17 @@ void
|
||||
WMSetTabViewType(WMTabView *tPtr, WMTabViewType type)
|
||||
{
|
||||
tPtr->flags.type = type;
|
||||
|
||||
|
||||
if (type != WTTopTabsBevelBorder)
|
||||
tPtr->tabHeight = 0;
|
||||
tPtr->tabHeight = 0;
|
||||
else
|
||||
tPtr->tabHeight = WMFontHeight(tPtr->font) + 3;
|
||||
|
||||
tPtr->tabHeight = WMFontHeight(tPtr->font) + 3;
|
||||
|
||||
if (type == WTNoTabsNoBorder)
|
||||
tPtr->flags.bordered = 0;
|
||||
tPtr->flags.bordered = 0;
|
||||
else
|
||||
tPtr->flags.bordered = 1;
|
||||
|
||||
tPtr->flags.bordered = 1;
|
||||
|
||||
rearrange(tPtr);
|
||||
}
|
||||
|
||||
@@ -490,10 +490,10 @@ WMSelectTabViewItem(WMTabView *tPtr, WMTabViewItem *item)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < tPtr->itemCount; i++) {
|
||||
if (tPtr->items[i] == item) {
|
||||
WMSelectTabViewItemAtIndex(tPtr, i);
|
||||
break;
|
||||
}
|
||||
if (tPtr->items[i] == item) {
|
||||
WMSelectTabViewItemAtIndex(tPtr, i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -504,24 +504,24 @@ WMSelectTabViewItemAtIndex(WMTabView *tPtr, int index)
|
||||
WMTabViewItem *item;
|
||||
|
||||
if (index == tPtr->selectedItem) {
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
if (index < 0)
|
||||
index = 0;
|
||||
index = 0;
|
||||
else if (index >= tPtr->itemCount)
|
||||
index = tPtr->itemCount - 1;
|
||||
index = tPtr->itemCount - 1;
|
||||
|
||||
item = tPtr->items[tPtr->selectedItem];
|
||||
|
||||
if (tPtr->delegate && tPtr->delegate->shouldSelectItem)
|
||||
if (!(*tPtr->delegate->shouldSelectItem)(tPtr->delegate, tPtr,
|
||||
tPtr->items[index]))
|
||||
return;
|
||||
if (!(*tPtr->delegate->shouldSelectItem)(tPtr->delegate, tPtr,
|
||||
tPtr->items[index]))
|
||||
return;
|
||||
|
||||
if (tPtr->delegate && tPtr->delegate->willSelectItem)
|
||||
(*tPtr->delegate->willSelectItem)(tPtr->delegate, tPtr,
|
||||
tPtr->items[index]);
|
||||
(*tPtr->delegate->willSelectItem)(tPtr->delegate, tPtr,
|
||||
tPtr->items[index]);
|
||||
|
||||
W_UnmapTabViewItem(item);
|
||||
|
||||
@@ -533,9 +533,9 @@ WMSelectTabViewItemAtIndex(WMTabView *tPtr, int index)
|
||||
tPtr->selectedItem = index;
|
||||
|
||||
if (tPtr->delegate && tPtr->delegate->didSelectItem)
|
||||
(*tPtr->delegate->didSelectItem)(tPtr->delegate, tPtr,
|
||||
tPtr->items[index]);
|
||||
|
||||
(*tPtr->delegate->didSelectItem)(tPtr->delegate, tPtr,
|
||||
tPtr->items[index]);
|
||||
|
||||
paintTabView(tPtr);
|
||||
}
|
||||
|
||||
@@ -549,58 +549,58 @@ recalcTabWidth(TabView *tPtr)
|
||||
int width;
|
||||
|
||||
if (tPtr->flags.uniformTabs) {
|
||||
int tabWidth;
|
||||
|
||||
tabWidth = 0;
|
||||
int tabWidth;
|
||||
|
||||
for (i = 0; i < tPtr->itemCount; i++) {
|
||||
char *str = WMGetTabViewItemLabel(tPtr->items[i]);
|
||||
|
||||
if (str) {
|
||||
width = WMWidthOfString(tPtr->font, str, strlen(str));
|
||||
if (width > tabWidth)
|
||||
tabWidth = width;
|
||||
}
|
||||
}
|
||||
|
||||
tabWidth = tabWidth + 30;
|
||||
|
||||
for (i = 0; i < tPtr->itemCount; i++)
|
||||
W_SetTabViewItemTabWidth(tPtr->items[i], tabWidth);
|
||||
|
||||
tPtr->firstVisible = 0;
|
||||
tPtr->visibleTabs = countVisibleTabs(tPtr, -1);
|
||||
if (tPtr->visibleTabs < tPtr->itemCount)
|
||||
tPtr->flags.dontFitAll = 1;
|
||||
else
|
||||
tPtr->flags.dontFitAll = 0;
|
||||
tabWidth = 0;
|
||||
|
||||
for (i = 0; i < tPtr->itemCount; i++) {
|
||||
char *str = WMGetTabViewItemLabel(tPtr->items[i]);
|
||||
|
||||
if (str) {
|
||||
width = WMWidthOfString(tPtr->font, str, strlen(str));
|
||||
if (width > tabWidth)
|
||||
tabWidth = width;
|
||||
}
|
||||
}
|
||||
|
||||
tabWidth = tabWidth + 30;
|
||||
|
||||
for (i = 0; i < tPtr->itemCount; i++)
|
||||
W_SetTabViewItemTabWidth(tPtr->items[i], tabWidth);
|
||||
|
||||
tPtr->firstVisible = 0;
|
||||
tPtr->visibleTabs = countVisibleTabs(tPtr, -1);
|
||||
if (tPtr->visibleTabs < tPtr->itemCount)
|
||||
tPtr->flags.dontFitAll = 1;
|
||||
else
|
||||
tPtr->flags.dontFitAll = 0;
|
||||
} else {
|
||||
for (i = 0; i < tPtr->itemCount; i++) {
|
||||
char *str = WMGetTabViewItemLabel(tPtr->items[i]);
|
||||
if (!str)
|
||||
continue;
|
||||
for (i = 0; i < tPtr->itemCount; i++) {
|
||||
char *str = WMGetTabViewItemLabel(tPtr->items[i]);
|
||||
if (!str)
|
||||
continue;
|
||||
|
||||
width = WMWidthOfString(tPtr->font, str, strlen(str)) + 30;
|
||||
width = WMWidthOfString(tPtr->font, str, strlen(str)) + 30;
|
||||
|
||||
W_SetTabViewItemTabWidth(tPtr->items[i], width);
|
||||
}
|
||||
W_SetTabViewItemTabWidth(tPtr->items[i], width);
|
||||
}
|
||||
|
||||
if (countVisibleTabs(tPtr, -1) < tPtr->itemCount) {
|
||||
tPtr->flags.dontFitAll = 1;
|
||||
tPtr->firstVisible = 0;
|
||||
tPtr->visibleTabs = countVisibleTabs(tPtr, tPtr->firstVisible);
|
||||
} else {
|
||||
tPtr->flags.dontFitAll = 0;
|
||||
tPtr->firstVisible = 0;
|
||||
tPtr->visibleTabs = tPtr->itemCount;
|
||||
}
|
||||
if (countVisibleTabs(tPtr, -1) < tPtr->itemCount) {
|
||||
tPtr->flags.dontFitAll = 1;
|
||||
tPtr->firstVisible = 0;
|
||||
tPtr->visibleTabs = countVisibleTabs(tPtr, tPtr->firstVisible);
|
||||
} else {
|
||||
tPtr->flags.dontFitAll = 0;
|
||||
tPtr->firstVisible = 0;
|
||||
tPtr->visibleTabs = tPtr->itemCount;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
drawRelief(W_Screen *scr, Drawable d, int x, int y, unsigned int width,
|
||||
unsigned int height)
|
||||
unsigned int height)
|
||||
{
|
||||
Display *dpy = scr->display;
|
||||
GC bgc = WMColorGC(scr->black);
|
||||
@@ -618,8 +618,8 @@ drawRelief(W_Screen *scr, Drawable d, int x, int y, unsigned int width,
|
||||
|
||||
|
||||
static void
|
||||
drawTab(TabView *tPtr, Drawable d, int x, int y,
|
||||
unsigned width, unsigned height, Bool selected)
|
||||
drawTab(TabView *tPtr, Drawable d, int x, int y,
|
||||
unsigned width, unsigned height, Bool selected)
|
||||
{
|
||||
WMScreen *scr = W_VIEW(tPtr)->screen;
|
||||
Display *dpy = scr->display;
|
||||
@@ -654,7 +654,7 @@ drawTab(TabView *tPtr, Drawable d, int x, int y,
|
||||
trap[7].y = y + height - (selected ? 0 : 1);
|
||||
|
||||
XFillPolygon(dpy, d, selected ? light : WMColorGC(tPtr->tabColor), trap, 8,
|
||||
Convex, CoordModeOrigin);
|
||||
Convex, CoordModeOrigin);
|
||||
|
||||
XDrawLine(dpy, d, white, trap[0].x, trap[0].y, trap[1].x, trap[1].y);
|
||||
XDrawLine(dpy, d, white, trap[1].x, trap[1].y, trap[2].x, trap[2].y);
|
||||
@@ -664,8 +664,8 @@ drawTab(TabView *tPtr, Drawable d, int x, int y,
|
||||
XDrawLine(dpy, d, black, trap[5].x, trap[5].y, trap[6].x, trap[6].y);
|
||||
XDrawLine(dpy, d, black, trap[6].x, trap[6].y, trap[7].x, trap[7].y);
|
||||
|
||||
XDrawLine(dpy, d, selected ? light : WMColorGC(scr->white),
|
||||
trap[0].x, trap[0].y, trap[7].x, trap[7].y);
|
||||
XDrawLine(dpy, d, selected ? light : WMColorGC(scr->white),
|
||||
trap[0].x, trap[0].y, trap[7].x, trap[7].y);
|
||||
}
|
||||
|
||||
|
||||
@@ -693,126 +693,126 @@ paintTabView(TabView *tPtr)
|
||||
int i;
|
||||
|
||||
if (tPtr->flags.type == WTTopTabsBevelBorder) {
|
||||
int count = tPtr->visibleTabs;
|
||||
int first = tPtr->firstVisible;
|
||||
int moreAtLeft;
|
||||
int moreAtRight;
|
||||
int selectedIsVisible;
|
||||
int ty;
|
||||
int twidth, theight;
|
||||
|
||||
ty = 2;
|
||||
theight = tPtr->tabHeight;
|
||||
|
||||
buffer = XCreatePixmap(dpy, W_VIEW(tPtr)->window,
|
||||
W_VIEW(tPtr)->size.width, theight,
|
||||
W_VIEW(tPtr)->screen->depth);
|
||||
|
||||
XFillRectangle(dpy, buffer, WMColorGC(W_VIEW(tPtr)->backColor),
|
||||
0, 0, W_VIEW(tPtr)->size.width, tPtr->tabHeight);
|
||||
int count = tPtr->visibleTabs;
|
||||
int first = tPtr->firstVisible;
|
||||
int moreAtLeft;
|
||||
int moreAtRight;
|
||||
int selectedIsVisible;
|
||||
int ty;
|
||||
int twidth, theight;
|
||||
|
||||
if (tPtr->flags.dontFitAll) {
|
||||
moreAtLeft = first > 0;
|
||||
moreAtRight = (first + count) < tPtr->itemCount;
|
||||
if (tPtr->selectedItem >= first
|
||||
&& tPtr->selectedItem < first + count)
|
||||
selectedIsVisible = 1;
|
||||
else
|
||||
selectedIsVisible = 0;
|
||||
} else {
|
||||
moreAtLeft = 0;
|
||||
moreAtRight = 0;
|
||||
selectedIsVisible = 1;
|
||||
}
|
||||
ty = 2;
|
||||
theight = tPtr->tabHeight;
|
||||
|
||||
if (moreAtRight) {
|
||||
drawTab(tPtr, buffer, positionOfTab(tPtr, first+count), 0,
|
||||
W_VIEW_WIDTH(tPtr->view), theight, False);
|
||||
}
|
||||
for (i = first + count-1; i >= first; i--) {
|
||||
if (!selectedIsVisible || i != tPtr->selectedItem) {
|
||||
twidth = W_TabViewItemTabWidth(tPtr->items[i]);
|
||||
buffer = XCreatePixmap(dpy, W_VIEW(tPtr)->window,
|
||||
W_VIEW(tPtr)->size.width, theight,
|
||||
W_VIEW(tPtr)->screen->depth);
|
||||
|
||||
drawTab(tPtr, buffer, positionOfTab(tPtr, i), 0,
|
||||
twidth, theight, False);
|
||||
}
|
||||
}
|
||||
if (moreAtLeft) {
|
||||
drawTab(tPtr, buffer, positionOfTab(tPtr, 0)-2*BUTTONED_SIDE_OFFSET,
|
||||
0, BUTTONED_SIDE_OFFSET*4, theight, False);
|
||||
}
|
||||
|
||||
if (selectedIsVisible) {
|
||||
int idx = tPtr->selectedItem;
|
||||
XFillRectangle(dpy, buffer, WMColorGC(W_VIEW(tPtr)->backColor),
|
||||
0, 0, W_VIEW(tPtr)->size.width, tPtr->tabHeight);
|
||||
|
||||
drawTab(tPtr, buffer, positionOfTab(tPtr, idx),
|
||||
0, W_TabViewItemTabWidth(tPtr->items[idx]),
|
||||
theight, True);
|
||||
if (tPtr->flags.dontFitAll) {
|
||||
moreAtLeft = first > 0;
|
||||
moreAtRight = (first + count) < tPtr->itemCount;
|
||||
if (tPtr->selectedItem >= first
|
||||
&& tPtr->selectedItem < first + count)
|
||||
selectedIsVisible = 1;
|
||||
else
|
||||
selectedIsVisible = 0;
|
||||
} else {
|
||||
moreAtLeft = 0;
|
||||
moreAtRight = 0;
|
||||
selectedIsVisible = 1;
|
||||
}
|
||||
|
||||
XDrawLine(dpy, buffer, white, 0, theight - 1,
|
||||
positionOfTab(tPtr, idx), theight - 1);
|
||||
if (moreAtRight) {
|
||||
drawTab(tPtr, buffer, positionOfTab(tPtr, first+count), 0,
|
||||
W_VIEW_WIDTH(tPtr->view), theight, False);
|
||||
}
|
||||
for (i = first + count-1; i >= first; i--) {
|
||||
if (!selectedIsVisible || i != tPtr->selectedItem) {
|
||||
twidth = W_TabViewItemTabWidth(tPtr->items[i]);
|
||||
|
||||
XDrawLine(dpy, buffer, white,
|
||||
positionOfTab(tPtr, idx) + W_TabViewItemTabWidth(tPtr->items[idx]),
|
||||
tPtr->tabHeight - 1, W_VIEW_WIDTH(tPtr->view) - 1,
|
||||
tPtr->tabHeight - 1);
|
||||
} else {
|
||||
XDrawLine(dpy, buffer, white, 0, theight - 1,
|
||||
W_VIEW_WIDTH(tPtr->view), theight - 1);
|
||||
}
|
||||
drawTab(tPtr, buffer, positionOfTab(tPtr, i), 0,
|
||||
twidth, theight, False);
|
||||
}
|
||||
}
|
||||
if (moreAtLeft) {
|
||||
drawTab(tPtr, buffer, positionOfTab(tPtr, 0)-2*BUTTONED_SIDE_OFFSET,
|
||||
0, BUTTONED_SIDE_OFFSET*4, theight, False);
|
||||
}
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
WMRect rect;
|
||||
|
||||
rect.pos.x = 15 + positionOfTab(tPtr, first+i);
|
||||
rect.pos.y = ty;
|
||||
rect.size.width = W_TabViewItemTabWidth(tPtr->items[first+i]);
|
||||
rect.size.height = theight;
|
||||
W_DrawLabel(tPtr->items[first+i], buffer, rect,
|
||||
if (selectedIsVisible) {
|
||||
int idx = tPtr->selectedItem;
|
||||
|
||||
drawTab(tPtr, buffer, positionOfTab(tPtr, idx),
|
||||
0, W_TabViewItemTabWidth(tPtr->items[idx]),
|
||||
theight, True);
|
||||
|
||||
XDrawLine(dpy, buffer, white, 0, theight - 1,
|
||||
positionOfTab(tPtr, idx), theight - 1);
|
||||
|
||||
XDrawLine(dpy, buffer, white,
|
||||
positionOfTab(tPtr, idx) + W_TabViewItemTabWidth(tPtr->items[idx]),
|
||||
tPtr->tabHeight - 1, W_VIEW_WIDTH(tPtr->view) - 1,
|
||||
tPtr->tabHeight - 1);
|
||||
} else {
|
||||
XDrawLine(dpy, buffer, white, 0, theight - 1,
|
||||
W_VIEW_WIDTH(tPtr->view), theight - 1);
|
||||
}
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
WMRect rect;
|
||||
|
||||
rect.pos.x = 15 + positionOfTab(tPtr, first+i);
|
||||
rect.pos.y = ty;
|
||||
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->items[first+i]->flags.enabled);
|
||||
}
|
||||
}
|
||||
|
||||
if (moreAtLeft) {
|
||||
paintDot(tPtr, buffer, 4, 10);
|
||||
paintDot(tPtr, buffer, 7, 10);
|
||||
paintDot(tPtr, buffer, 10, 10);
|
||||
}
|
||||
if (moreAtRight) {
|
||||
int x;
|
||||
|
||||
x = positionOfTab(tPtr, tPtr->firstVisible + tPtr->visibleTabs);
|
||||
if (moreAtLeft) {
|
||||
paintDot(tPtr, buffer, 4, 10);
|
||||
paintDot(tPtr, buffer, 7, 10);
|
||||
paintDot(tPtr, buffer, 10, 10);
|
||||
}
|
||||
if (moreAtRight) {
|
||||
int x;
|
||||
|
||||
x = x + (W_VIEW_WIDTH(tPtr->view) - x)/2;
|
||||
paintDot(tPtr, buffer, x + 5, 10);
|
||||
paintDot(tPtr, buffer, x + 8, 10);
|
||||
paintDot(tPtr, buffer, x + 11, 10);
|
||||
}
|
||||
|
||||
XCopyArea(dpy, buffer, W_VIEW(tPtr)->window, scr->copyGC, 0, 0,
|
||||
W_VIEW_WIDTH(tPtr->view), theight, 0, 0);
|
||||
x = positionOfTab(tPtr, tPtr->firstVisible + tPtr->visibleTabs);
|
||||
|
||||
XFreePixmap(dpy, buffer);
|
||||
x = x + (W_VIEW_WIDTH(tPtr->view) - x)/2;
|
||||
paintDot(tPtr, buffer, x + 5, 10);
|
||||
paintDot(tPtr, buffer, x + 8, 10);
|
||||
paintDot(tPtr, buffer, x + 11, 10);
|
||||
}
|
||||
|
||||
XCopyArea(dpy, buffer, W_VIEW(tPtr)->window, scr->copyGC, 0, 0,
|
||||
W_VIEW_WIDTH(tPtr->view), theight, 0, 0);
|
||||
|
||||
XFreePixmap(dpy, buffer);
|
||||
}
|
||||
switch (tPtr->flags.type) {
|
||||
case WTTopTabsBevelBorder:
|
||||
drawRelief(scr, W_VIEW(tPtr)->window, 0, tPtr->tabHeight - 1,
|
||||
W_VIEW(tPtr)->size.width,
|
||||
W_VIEW(tPtr)->size.height - tPtr->tabHeight + 1);
|
||||
break;
|
||||
case WTTopTabsBevelBorder:
|
||||
drawRelief(scr, W_VIEW(tPtr)->window, 0, tPtr->tabHeight - 1,
|
||||
W_VIEW(tPtr)->size.width,
|
||||
W_VIEW(tPtr)->size.height - tPtr->tabHeight + 1);
|
||||
break;
|
||||
|
||||
case WTNoTabsBevelBorder:
|
||||
W_DrawRelief(scr, W_VIEW(tPtr)->window, 0, 0, W_VIEW(tPtr)->size.width,
|
||||
W_VIEW(tPtr)->size.height, WRRaised);
|
||||
break;
|
||||
case WTNoTabsBevelBorder:
|
||||
W_DrawRelief(scr, W_VIEW(tPtr)->window, 0, 0, W_VIEW(tPtr)->size.width,
|
||||
W_VIEW(tPtr)->size.height, WRRaised);
|
||||
break;
|
||||
|
||||
case WTNoTabsLineBorder:
|
||||
W_DrawRelief(scr, W_VIEW(tPtr)->window, 0, 0, W_VIEW(tPtr)->size.width,
|
||||
W_VIEW(tPtr)->size.height, WRSimple);
|
||||
break;
|
||||
case WTNoTabsLineBorder:
|
||||
W_DrawRelief(scr, W_VIEW(tPtr)->window, 0, 0, W_VIEW(tPtr)->size.width,
|
||||
W_VIEW(tPtr)->size.height, WRSimple);
|
||||
break;
|
||||
|
||||
case WTNoTabsNoBorder:
|
||||
break;
|
||||
case WTNoTabsNoBorder:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -823,19 +823,19 @@ rearrange(TabView *tPtr)
|
||||
int i;
|
||||
int width, height;
|
||||
int bordered = tPtr->flags.bordered;
|
||||
|
||||
|
||||
recalcTabWidth(tPtr);
|
||||
|
||||
width = tPtr->view->size.width - (bordered ? 3 : 0);
|
||||
height = tPtr->view->size.height - tPtr->tabHeight - (bordered ? 3 : 0);
|
||||
|
||||
|
||||
for (i = 0; i < tPtr->itemCount; i++) {
|
||||
W_MoveView(W_TabViewItemView(tPtr->items[i]),
|
||||
1*bordered, tPtr->tabHeight + 1*bordered);
|
||||
W_ResizeView(W_TabViewItemView(tPtr->items[i]), width, height);
|
||||
W_MoveView(W_TabViewItemView(tPtr->items[i]),
|
||||
1*bordered, tPtr->tabHeight + 1*bordered);
|
||||
W_ResizeView(W_TabViewItemView(tPtr->items[i]), width, height);
|
||||
}
|
||||
if (W_VIEW_MAPPED(tPtr->view) && W_VIEW_REALIZED(tPtr->view))
|
||||
paintTabView(tPtr);
|
||||
paintTabView(tPtr);
|
||||
}
|
||||
|
||||
|
||||
@@ -852,8 +852,8 @@ destroyTabView(TabView *tPtr)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < tPtr->itemCount; i++) {
|
||||
WMSetTabViewItemView(tPtr->items[i], NULL);
|
||||
WMDestroyTabViewItem(tPtr->items[i]);
|
||||
WMSetTabViewItemView(tPtr->items[i], NULL);
|
||||
WMDestroyTabViewItem(tPtr->items[i]);
|
||||
}
|
||||
wfree(tPtr->items);
|
||||
|
||||
@@ -880,11 +880,11 @@ W_DrawLabel(WMTabViewItem *item, Drawable d, WMRect rect, Bool enabled)
|
||||
WMScreen *scr = W_VIEW(item->tabView)->screen;
|
||||
|
||||
if (!item->label)
|
||||
return;
|
||||
return;
|
||||
|
||||
WMDrawString(scr, d, enabled ? scr->black : scr->darkGray,
|
||||
item->tabView->font, rect.pos.x, rect.pos.y,
|
||||
item->label, strlen(item->label));
|
||||
item->tabView->font, rect.pos.x, rect.pos.y,
|
||||
item->label, strlen(item->label));
|
||||
}
|
||||
|
||||
|
||||
@@ -971,7 +971,7 @@ WMSetTabViewItemEnabled(WMTabViewItem *tPtr, Bool flag)
|
||||
{
|
||||
tPtr->flags.enabled = ((flag==0) ? 0 : 1);
|
||||
if (tPtr->tabView && W_VIEW_REALIZED(tPtr->tabView->view))
|
||||
paintTabView(tPtr->tabView);
|
||||
paintTabView(tPtr->tabView);
|
||||
}
|
||||
|
||||
|
||||
@@ -986,7 +986,7 @@ void
|
||||
WMSetTabViewFont(WMTabView *tPtr, WMFont *font)
|
||||
{
|
||||
if (tPtr->font)
|
||||
WMReleaseFont(tPtr->font);
|
||||
WMReleaseFont(tPtr->font);
|
||||
|
||||
tPtr->font = WMRetainFont(font);
|
||||
tPtr->tabHeight = WMFontHeight(tPtr->font) + 3;
|
||||
@@ -998,15 +998,15 @@ void
|
||||
WMSetTabViewItemLabel(WMTabViewItem *item, char *label)
|
||||
{
|
||||
if (item->label)
|
||||
wfree(item->label);
|
||||
wfree(item->label);
|
||||
|
||||
if (label)
|
||||
item->label = wstrdup(label);
|
||||
item->label = wstrdup(label);
|
||||
else
|
||||
item->label = NULL;
|
||||
item->label = NULL;
|
||||
|
||||
if (item->tabView)
|
||||
recalcTabWidth(item->tabView);
|
||||
recalcTabWidth(item->tabView);
|
||||
}
|
||||
|
||||
|
||||
@@ -1035,10 +1035,11 @@ void
|
||||
WMDestroyTabViewItem(WMTabViewItem *item)
|
||||
{
|
||||
if (item->label)
|
||||
wfree(item->label);
|
||||
wfree(item->label);
|
||||
|
||||
if (item->view)
|
||||
W_DestroyView(item->view);
|
||||
W_DestroyView(item->view);
|
||||
|
||||
wfree(item);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user