andlabs / andlabs/libui

ScrollingArea setSize does nothing on Windows

Ouverte
#344 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
C
Étoiles
10.9k
Forks
612
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

It seems like `uiAreaSetSize` has no effect whatsoever on the area (at least on macOS and Windows 10):

```c
#include
#include
#include "ui.h"

double width = 0;
double height = 0;

static void handlerDraw(uiAreaHandler *a, uiArea *area, uiAreaDrawParams *p)
{
uiDrawBrush brush;
brush.Type = uiDrawBrushTypeSolid;
brush.R = 255;
brush.G = 0;
brush.B = 0;
brush.A = 1.0;

uiDrawPath *path = uiDrawNewPath(uiDrawFillModeWinding);
uiDrawPathAddRectangle(path, 0, 0, 1000, 1000);
uiDrawPathEnd(path);

uiDrawFill(p->Context, path, &brush);
uiDrawFreePath(path);
}

static void handlerMouseEvent(uiAreaHandler *a, uiArea *area, uiAreaMouseEvent *e) {
width = 2*e->X;
height = 2*e->Y;
printf("%d %d\n", (int)width, (int)height);
uiAreaSetSize(area, width, height);
uiAreaQueueRedrawAll(area);
}
static void handlerMouseCrossed(uiAreaHandler *ah, uiArea *a, int left) {}
static void handlerDragBroken(uiAreaHandler *ah, uiArea *a) {}
static int handlerKeyEvent(uiAreaHandler *ah, uiArea *a, uiAreaKeyEvent *e) {return 0;}

int main(void)
{
uiInitOptions o;
const char *err;

memset(&o, 0, sizeof (uiInitOptions));
err = uiInit(&o);
if (err != NULL) {
fprintf(stderr, "error initializing ui: %s\n", err);
uiFreeInitError(err);
return 1;
}

uiWindow *mainwin = uiNewWindow("test", 600, 600, 1);
uiAreaHandler handler;

handler.Draw = handlerDraw;
handler.MouseEvent = handlerMouseEvent;
handler.MouseCrossed = handlerMouseCrossed;
handler.DragBroken = handlerDragBroken;
handler.KeyEvent = handlerKeyEvent;

uiArea *area = uiNewScrollingArea(&handler, 400, 400);

uiWindowSetChild(mainwin, uiControl(area));

uiControlShow(uiControl(mainwin));

uiMain();
return 0;
}
```

libui-node's issue: https://github.com/parro-it/libui-node/issues/91

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.