Ok, i temporarily reverted the change that causes this. I'll track down
the bug probably later today. The change i made would only run
div_rebuild() if the size/position of a widget changes. It fixed a
multiple-redraw problem that Eric found, but looks like it causes worse
problems :(
On Wed, Feb 06, 2002 at 05:07:36PM +0100, Philippe Ney wrote:
> Hi Micah,
>
> Since the last changes of the server, I note a problem that seems to be due to
>resizing of widgets.
> The following code highlight the problem.
> The 'toggle' button juste toggle the size of the ~laucher~ between 0 and PG_S_ALL.
> And when the ~laucher~ is graphically corrupted, you can retrieve it as good by
>changing the size of the window.
>
> I hope this is of some help for you,
> -philippe
>
>
> ---8<----------------------------------------
>
> #include <stdio.h>
> #include <stdlib.h>
>
> #include <picogui.h>
>
>
> /*
> * define the grid of the button for the Launcher
> * a 'NULL' define a new line and a double 'NULL' for the end of the grid
> * (this is due to the algo for grid construction)
> */
> static char *buttongrid[] = {
> NULL,"ToDo","Web","Games",
> NULL,"Calculator","Mail","Expenses",
> NULL,"Addresses","Calendar","Notes",
> NULL,NULL
> };
>
> static pghandle wLauncherApp;
>
>
> /* Load the Launcher app in memory */
> int launcher_load(void) {
> char* s;
> int i;
> pghandle wRow=0,wButton=0,wGridbox=0;
>
> wLauncherApp = pgRegisterApp(PG_APP_NORMAL,"Launcher Panel",0);
>
> /* Box widget that occupies ... */
> wGridbox = pgNewWidget(PG_WIDGET_BOX,0,0);
> pgSetWidget(PGDEFAULT,PG_WP_SIDE,PG_S_ALL,0); /* ... all the free space */
>
> /* The Launcher panel */
> for (i=0;;i++) {
> s = buttongrid[i];
> if (s) { /* Add a button to the row */
> wButton = pgNewWidget(PG_WIDGET_FLATBUTTON,
> wButton ? PG_DERIVE_AFTER : PG_DERIVE_INSIDE,
> wButton ? wButton : wRow);
> pgSetWidget(PGDEFAULT,
> PG_WP_TEXT,pgNewString(s),
> PG_WP_SIZEMODE,PG_SZMODE_CNTFRACT,
> PG_WP_SIZE,pgFraction(1,3),
> 0);
> pgSetPayload(PGDEFAULT,(unsigned long) s);
> }
> else { /* Add a row */
> if (!buttongrid[i+1]) /* Two consecutive NULLs, exit */
> break;
>
> wRow = pgNewWidget(PG_WIDGET_BOX,
> wRow ? PG_DERIVE_AFTER : PG_DERIVE_INSIDE,
> wRow ? wRow : wGridbox);
> pgSetWidget(PGDEFAULT,
> PG_WP_TRANSPARENT,1,
> PG_WP_SIDE,PG_S_BOTTOM,
> PG_WP_SIZEMODE,PG_SZMODE_CNTFRACT,
> PG_WP_SIZE,pgFraction(1,3),
> 0);
> wButton = 0;
> }
> }
> }
>
> /* toggle the size of the launcher */
> int toggle_btn_handler(struct pgEvent *evt) {
> static int size = 0;
> static int last_size = 1;
>
> last_size = (last_size ? 0 : 1);
> printf("%i\n",last_size);
> size = PG_S_ALL * last_size;
>
> if(wLauncherApp)
> /* the handle is not 0 then the Launcher app is already loaded */
> pgSetWidget(wLauncherApp,PG_WP_SIZE,size,0);
>
> return 0;
> }
>
>
> /* Main program */
> int main(int argc, char **argv) {
> pgInit(argc,argv);
>
> pgRegisterApp( PG_APP_TOOLBAR,"Toolbar",
> PG_APPSPEC_SIDE,PG_S_BOTTOM,
> 0 );
>
> pgNewWidget(PG_WIDGET_BUTTON, 0, 0);
> pgSetWidget(PGDEFAULT,
> PG_WP_SIDE,PG_S_LEFT,
> PG_WP_TEXT,pgNewString("Toggle"),
> 0);
> pgBind(PGDEFAULT,PG_WE_ACTIVATE,&toggle_btn_handler,NULL);
>
> /* Call the launcher panel */
> launcher_load();
>
> pgEventLoop();
>
> return 0;
> }
>
> /* The End */
>
> _______________________________________________
> Pgui-devel mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/pgui-devel
--
Only you can prevent creeping featurism!
_______________________________________________
Pgui-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/pgui-devel