1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-01-29 11:35:47 +01:00

- added WMGetLabelText()

- added WMReparentWidget()
- added WMCreateTabViewItem()
- added W_CreateUnmanagedTopView()
- fixed deletion from tree bag
This commit is contained in:
kojima
2000-07-10 22:37:39 +00:00
parent 4cb5649545
commit e29fce43b1
17 changed files with 2387 additions and 2165 deletions

View File

@@ -112,9 +112,7 @@ createView(W_Screen *screen, W_View *parent)
view = wmalloc(sizeof(W_View));
memset(view, 0, sizeof(W_View));
view->refCount = 1;
view->screen = screen;
if (parent!=NULL) {
@@ -131,6 +129,8 @@ createView(W_Screen *screen, W_View *parent)
adoptChildView(parent, view);
}
view->eventHandlers = WMCreateBag(4);
return view;
}
@@ -182,6 +182,24 @@ W_CreateTopView(W_Screen *screen)
}
W_View*
W_CreateUnmanagedTopView(W_Screen *screen)
{
W_View *view;
view = createView(screen, screen->rootView);
if (!view)
return NULL;
view->flags.topLevel = 1;
view->attribs.event_mask |= StructureNotifyMask;
view->attribFlags |= CWOverrideRedirect;
view->attribs.override_redirect = True;
return view;
}
void
W_RealizeView(W_View *view)
@@ -253,6 +271,23 @@ W_ReparentView(W_View *view, W_View *newParent, int x, int y)
}
void
W_RaiseView(W_View *view)
{
if (W_VIEW_REALIZED(view))
XRaiseWindow(W_VIEW_DISPLAY(view), W_VIEW_DRAWABLE(view));
}
void
W_LowerView(W_View *view)
{
if (W_VIEW_REALIZED(view))
XLowerWindow(W_VIEW_DISPLAY(view), W_VIEW_DRAWABLE(view));
}
void
W_MapView(W_View *view)
@@ -324,7 +359,9 @@ W_TopLevelOfView(W_View *view)
{
W_View *toplevel;
for (toplevel=view; !toplevel->flags.topLevel; toplevel=toplevel->parent);
for (toplevel=view;
toplevel && !toplevel->flags.topLevel;
toplevel=toplevel->parent);
return toplevel;
}
@@ -374,7 +411,7 @@ destroyView(W_View *view)
}
}
}
/* destroy children recursively */
while (view->childrenList!=NULL) {
ptr = view->childrenList;
@@ -391,7 +428,8 @@ destroyView(W_View *view)
W_CallDestroyHandlers(view);
if (view->flags.realized) {
XDeleteContext(view->screen->display, view->window, ViewContext);
XDeleteContext(view->screen->display,
view->window, ViewContext);
/* if parent is being destroyed, it will die naturaly */
if (!view->flags.parentDying || view->flags.topLevel)
@@ -403,6 +441,9 @@ destroyView(W_View *view)
W_CleanUpEvents(view);
WMFreeBag(view->eventHandlers);
view->eventHandlers = NULL;
WMUnregisterViewDraggedTypes(view);
#if 0
@@ -424,7 +465,8 @@ destroyView(W_View *view)
void
W_DestroyView(W_View *view)
{
W_ReleaseView(view);
if (view->refCount == 0)
destroyView(view);
}
@@ -607,6 +649,7 @@ WMView*
W_RetainView(WMView *view)
{
view->refCount++;
return view;
}
@@ -616,7 +659,8 @@ void
W_ReleaseView(WMView *view)
{
view->refCount--;
if (view->refCount < 1) {
if (view->refCount < 0) {
destroyView(view);
}
}