1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
#include <signal.h>
#include "nptext.h"
extern void *text_p;
void SIGUSR1_handler( int signo )
{
NP_Text *text = ( NP_Text *)text_p;
if ( text->reading )
return;
text->reading = 1;
if ( text->server != NULL )
{
free( text->server );
text->server = NULL;
}
if ( text->group != NULL )
{
free( text->group );
text->group = NULL;
}
if ( text->text != NULL )
{
free( text->text );
text->text = NULL;
}
text->offset = text->size = -1;
text->requested = text->header = text->header_shown = -2;
int len = gtk_text_get_length( GTK_TEXT( text->text_widget ));
if ( len > 0 )
{
gtk_text_freeze( GTK_TEXT( text->text_widget ));
gtk_text_set_point( GTK_TEXT( text->text_widget ), 0 );
gtk_text_forward_delete( GTK_TEXT( text->text_widget ), len );
gtk_text_thaw( GTK_TEXT( text->text_widget ));
gtk_widget_show( text->text_widget );
gtk_label_set( GTK_LABEL( text->subject_label ), "" );
gtk_label_set( GTK_LABEL( text->from_label ), "" );
gtk_label_set( GTK_LABEL( text->date_label ), "" );
}
text->reading = 0;
signal( SIGUSR1, SIGUSR1_handler );
return;
}
|