GTK+-3 Testproggi bricht mit (Speicherabzug geschrieben) ab

Schnelle objektorientierte, kompilierende Programmiersprache.
3VAD_YNCAL
Beiträge: 51
Registriert: So Dez 04, 2011 3:14 am

GTK+-3 Testproggi bricht mit (Speicherabzug geschrieben) ab

Beitrag von 3VAD_YNCAL » Mo Aug 20, 2012 6:25 am

Guten Morgen zusammen,

ich versuche gerade ein GTK+ Programm zu realisieren, mit dem man Dateinamen ändern kann. Seltsamerweise bricht das Programm, nachdem man den Namen einer ausgewählten Datei geändert hat, mit folgender Fehlermeldung ab:

Code: Alles auswählen

Gtk:ERROR:/build/buildd/gtk+3.0-3.4.2/./gtk/gtkrbtree.c:465:_gtk_rbtree_insert_after: assertion failed: (_gtk_rbtree_is_nil (tree->root)) Abgebrochen (Speicherabzug geschrieben)
Hier mal der Quellcode:

Code: Alles auswählen

#include <glib/gstdio.h>
#include <gtk/gtk.h>
#include <unistd.h>

/* Struktur mit drei Widgets zur Änderung von Dateinamen. */
typedef struct
{
    GtkWidget *datei, 
                        *name, 
                        *neuer_name;
} W_Pack;

/* Prototypen */
static void datei_auswahl( GtkFileChooser *, W_Pack * );
static void name_aendern( GtkButton *, W_Pack * );

int main( int argc, char *argv[] )
{
    W_Pack *wp = ( W_Pack * )g_malloc( sizeof( W_Pack ) );
    GtkWidget *window, *hbox, *vbox;

    gtk_init( &argc, &argv );

    window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
    gtk_window_set_title( GTK_WINDOW( window ), "Dateinamen ändern" );
    gtk_container_set_border_width( GTK_CONTAINER( window ), 10 );

    g_signal_connect( G_OBJECT( window ), "destroy",
                                       G_CALLBACK( gtk_main_quit ), NULL );

    wp->datei = gtk_file_chooser_button_new( "Dateiauswahl",
                                                                                 GTK_FILE_CHOOSER_ACTION_OPEN ); /* Dateiauswahlknopf */

    /* home als Standardverzeichnis bei der Auswahl der gewünschten Datei. */
    gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER( wp->datei ), g_get_home_dir() ); 

    wp->name = gtk_entry_new(); /* Texteingabefeld für gewünschten Dateinamen */

    wp->neuer_name = gtk_button_new_from_stock( GTK_STOCK_APPLY ); /* Knopf zur Anwendung der Änderung */

    /* Bevor noch keine Datei ausgewählt wurde, Texteingabefeld und Knopf zur Anwendung sperren. */
    gtk_widget_set_sensitive( wp->name, FALSE ); /* Texteingabefeld sperren */
    gtk_widget_set_sensitive( wp->neuer_name, FALSE ); /* Knopf zur Anwendung sperren */

    /* Dateiauswahlknopf mit der Funktion datei_auswahl() verknüpfen. */
    g_signal_connect( G_OBJECT( wp->datei ), "selection-changed",
                                       G_CALLBACK( datei_auswahl ),
                                       ( gpointer ) wp );

    /* Knopf zur Anwendung der Namensänderung mit der Funktion name_aendern() verknüpfen. */
    g_signal_connect( G_OBJECT( wp->neuer_name ), "clicked",
                                       G_CALLBACK( name_aendern ),
                                       ( gpointer ) wp );

    /* Texteingabefeld und Anwendungsknopf in eine horizontale Box packen. */
    hbox = gtk_box_new( FALSE, 5 );
    gtk_box_pack_start( GTK_BOX( hbox ), wp->name, TRUE, TRUE, 0 );
    gtk_box_pack_start( GTK_BOX( hbox ), wp->neuer_name, FALSE, TRUE, 0 );

    /* Dateiauswahlknopf und horizontale Box in eine vertikale Box packen. */
    vbox = gtk_box_new( TRUE, 5 );
    gtk_box_pack_start( GTK_BOX( vbox ), wp->datei, TRUE, TRUE, 0 );
    gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, TRUE, 0 );

    gtk_container_add( GTK_CONTAINER( window ), vbox );
    gtk_widget_show_all( window );

    gtk_main();

    return 0;
}

static void datei_auswahl( GtkFileChooser *datei, W_Pack *wp )
{
    gchar *datei_name = gtk_file_chooser_get_filename( datei ); /* Name der ausgewählten Datei. */
    gint mode = g_access( datei_name, W_OK ); /* ausgewählte Datei auf Schreibrechte überprüfen */

    gtk_widget_set_sensitive( wp->name, !mode ); /* wenn mode == 0 - also TRUE -dann Texteingabefeld entsperren */
    gtk_widget_set_sensitive( wp->neuer_name, !mode ); /* Knopf zur Bestätigung der Anwendung entsperren */
}

static void name_aendern( GtkButton *neuer_name, W_Pack *wp )
{
    gchar *alt, *neu, *ort;

    alt = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER( wp->datei ) ); /* alte Datei im Auswahlknopf */
    ort = gtk_file_chooser_get_current_folder( GTK_FILE_CHOOSER( wp->datei ) ); /* Verzeichnis der ausgewählten Datei */

    /* neuer Name im Textfeld zum überschreiben des alten Namens im selben Ort */
    neu = g_strconcat( ort, "/", gtk_entry_get_text( GTK_ENTRY( wp->name ) ), NULL ); 

    g_rename( alt, neu ); /* alten mit neuen Namen überschreiben */

    gtk_widget_set_sensitive( wp->name, FALSE ); /* Texteingabefeld sperren */
    gtk_widget_set_sensitive( wp->neuer_name, FALSE ); /* Knopf zur Bestätigung der Anwendung sperren */
} 
Ich hoffe ihr könnt mir helfen, den Fehler zu finden. Ich komme einfach nicht drauf. Zumal der Compiler auch überhaupt nicht meckert beim kompilieren. Wäre euch sehr dankbar.

Gruß Dave :)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GTK+-3 Testproggi bricht mit (Speicherabzug geschrieben)

Beitrag von Xin » Mo Aug 20, 2012 10:28 am

Auf die Schnelle kann ich Dir leider nicht helfen, da ich kein passendes System hier habe, um Dein Programm zu kompilieren. Kannst Du am Ende der Rename-Funktion mal eine Messagebox platzieren und gucken, ob die Meldung vor dem Verlassen der Funktion kommt?

Wenn die Meldung vorher kommt, hau einfach mal eine Reihe von MessageBoxen rein, um die Zeile zu finden, die die Meldung ausgibt.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

3VAD_YNCAL
Beiträge: 51
Registriert: So Dez 04, 2011 3:14 am

Re: GTK+-3 Testproggi bricht mit (Speicherabzug geschrieben)

Beitrag von 3VAD_YNCAL » Mo Aug 20, 2012 5:46 pm

Xin hat geschrieben:Auf die Schnelle kann ich Dir leider nicht helfen, da ich kein passendes System hier habe, um Dein Programm zu kompilieren. Kannst Du am Ende der Rename-Funktion mal eine Messagebox platzieren und gucken, ob die Meldung vor dem Verlassen der Funktion kommt?

Wenn die Meldung vorher kommt, hau einfach mal eine Reihe von MessageBoxen rein, um die Zeile zu finden, die die Meldung ausgibt.
Hallo Xin,
leider habe ich noch zu wenig Erfahrung mit MessageBoxen und GTK+ allgemein. Allerdings habe ich folgendes ausprobiert und ich weiß nicht ob das so überhaupt geht bzw. richtig ist.
In der Funktion static void name_aendern():

Code: Alles auswählen

static void name_aendern( GtkButton *neuer_name, W_Pack *wp )
{
    gchar *alt, *neu, *ort;
    GtkWidget *window = gtk_window_new( GTK_WINDOW_TOPLEVEL );

    GtkWidget *dialog = gtk_message_dialog_new( GTK_WINDOW( window ),
					                                                                  GTK_DIALOG_DESTROY_WITH_PARENT,
					                                                                  GTK_MESSAGE_INFO,
					                                                                  GTK_BUTTONS_OK,
					                                                                   "Dateiname wurde geändert." );

    gtk_window_set_title( GTK_WINDOW( dialog ), "Info" );

    alt = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER( wp->datei ) ); /* alte Datei im Auswahlknopf */
    ort = gtk_file_chooser_get_current_folder( GTK_FILE_CHOOSER( wp->datei ) ); /* Verzeichnis der ausgewählten Datei */

    /* neuer Name im Textfeld zum überschreiben des alten Namens im selben Ort */
    neu = g_strconcat( ort, "/", gtk_entry_get_text( GTK_ENTRY( wp->name ) ), NULL );

    g_rename( alt, neu ); /* alten mit neuen Namen überschreiben */

    gtk_widget_set_sensitive( wp->name, FALSE ); /* Texteingabefeld sperren */
    gtk_widget_set_sensitive( wp->neuer_name, FALSE ); /* Knopf zur Bestätigung der Anwendung sperren */

    gtk_dialog_run( GTK_DIALOG( dialog ) );
    gtk_widget_destroy( dialog );
}
Jedenfalls wird die MessageBox angezeigt, nach dem der Dateiname geändert wurde. Doch bevor ich den OK-Button betätigen kann, verschwinden sowohl das Hauptfenster wie auch die MessageBox mit der besagten Fehlermeldung (Gtk:ERROR:/build/buildd/gtk+3.0-3.4.2/.....:assertion failed: (_gtk_rbtree_is_nil (tree->root)) Abgebrochen (Speicherabzug geschrieben))

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GTK+-3 Testproggi bricht mit (Speicherabzug geschrieben)

Beitrag von Xin » Mo Aug 20, 2012 5:52 pm

Hast Du das als komplettes Projekt, bzw. ist die Datei da oben alles?
Ansonsten mal hochladen, dann kann ich das gleich vielleicht mal bei mir starten.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

3VAD_YNCAL
Beiträge: 51
Registriert: So Dez 04, 2011 3:14 am

Re: GTK+-3 Testproggi bricht mit (Speicherabzug geschrieben)

Beitrag von 3VAD_YNCAL » Mo Aug 20, 2012 6:35 pm

Du kannst den gesamten Quellcode in meinem ersten Post einfach als C-Datei speichern und kompilieren. :)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GTK+-3 Testproggi bricht mit (Speicherabzug geschrieben)

Beitrag von Xin » Mo Aug 20, 2012 7:47 pm

So, nun habe ich mich doch etwas länger damit beschäftigt, als das ursprünglich geplant war. Und hier dann hier meine Antwort:

Punkt 1: Das Programm kann ich nicht kompilieren.

Code: Alles auswählen

    hbox = gtk_box_new( GTK_ORIENTATION_HORIZONTAL, 5 );
    gtk_box_pack_start( GTK_BOX( hbox ), wp->name, TRUE, TRUE, 0 );
    gtk_box_pack_start( GTK_BOX( hbox ), wp->neuer_name, FALSE, TRUE, 0 );

    /* Dateiauswahlknopf und horizontale Box in eine vertikale Box packen. */
    vbox = gtk_box_new( GTK_ORIENTATION_VERTICAL, 5 );
Statt True und False musst Du bei neueren Compilern GTK_ORIENTATION_HORIZONTAL bzw. _VERTICAL eingeben. Das ist keine Gemeinheit der neueren Compiler, sondern eher Schlunzigkeit der alten.

Nach der Änderung konnte ich Deinen Fehler nachvollziehen, aber ehrlich gesagt auch nicht verstehen.

Punkt 2: Resourcen wieder freigebeen.

Du forderst mit

Code: Alles auswählen

    neu = g_strconcat( ort, "/", gtk_entry_get_text( GTK_ENTRY( wp->name ) ), NULL ); 
Speicher an. Nach dem umbenennen musst Du die Resource wieder freigeben:

Code: Alles auswählen

    g_free( neu );
Selbiges gilt für wp, am Ende von main.

Punkt 3: Sieht alles gut aus... ich finde nix...
Irgendwann lief das Programm dann fehlerfrei - nur warum konnte ich nicht nachvollziehen. Also habe ich Deinen Quellcode genommen und das funktionsfähige Programm damit überschrieben, die oben stehenden Änderungen wieder eingefügt und... Fehler.

Code: Alles auswählen

gtkrbtree.c:465:_gtk_rbtree_insert_after: assertion failed: (_gtk_rbtree_is_nil (tree->root))
Also google. Dort findet man die Fehlermeldung auch in einem anderen Zusammenhang. Was ist ein gtkrbtree?

Code: Alles auswählen

A Red-Black Tree implementation used specifically by GtkTreeView.
Das Problem tritt also irgendwo bei GtkTreeView auf. Das klingt für mich eher nach dem FileRequest-Dialog.

Ich habe dann noch ein wenig weiterexperimentiert. Das bedeutet ich begann Teile zu entfernen, die zum Testen nicht erforderlich sind.
Trotz FileRequest läuft das Programm problemlos, wenn man auf den Aufruf der Funktion gtk_widget_set_sensitive() verzichtet.

Ich sehe außer die genannten keinen Fehler in Deinem Programm. Gtk3 ist aber noch eher frisch... vielleicht verwendest Du vorerst noch Gtk2...
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

3VAD_YNCAL
Beiträge: 51
Registriert: So Dez 04, 2011 3:14 am

Re: GTK+-3 Testproggi bricht mit (Speicherabzug geschrieben)

Beitrag von 3VAD_YNCAL » Mo Aug 20, 2012 11:13 pm

Hallo Xin,

zunächst ein Mal vielen Dank für deine Bemühungen. Sobald ich morgen früh von nach der Nachtschicht zu Hause bin, werde ich die von dir aufgezählten Fehler beheben. Also wenn ich das richtig verstanden habe, funktionierte bei dir das Programm fehlerlos, wenn man in der Funktion name_aendern() auf die Aufrufe der Funktion gtk_widget_set_sensitive() verzichtet. Okay. Probiere ich dann mal aus.

Dann hätte ich noch eine Frage zu gtk_message_dialog() wenn es okay ist.
Ich denke mal (obwohl es funktioniert hat), dass es nicht ganz richtig ist, wie ich den dialog innerhalb der name_aendern()-Funktion eingebaut habe. Könntet ihr mir vielleicht anhand meiner Funktion ein Beispiel zeigen, wie das richtig geht?

Ja genau - ich hatte auch vergessen zu erwähnen, dass mein Programm unter GTK+-2 fehlerlos funktioniert.

Vielen Dank. :-)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GTK+-3 Testproggi bricht mit (Speicherabzug geschrieben)

Beitrag von Xin » Mo Aug 20, 2012 11:50 pm

3VAD_YNCAL hat geschrieben:lso wenn ich das richtig verstanden habe, funktionierte bei dir das Programm fehlerlos, wenn man in der Funktion name_aendern() auf die Aufrufe der Funktion gtk_widget_set_sensitive() verzichtet.
Nimm alle raus.
3VAD_YNCAL hat geschrieben:Dann hätte ich noch eine Frage zu gtk_message_dialog() wenn es okay ist.
Ich denke mal (obwohl es funktioniert hat), dass es nicht ganz richtig ist, wie ich den dialog innerhalb der name_aendern()-Funktion eingebaut habe. Könntet ihr mir vielleicht anhand meiner Funktion ein Beispiel zeigen, wie das richtig geht?
Im C-Tutorial wird das als Beispiel verwandt, um eine Library anzusprechen. Den Quelltext findest Du hier.
3VAD_YNCAL hat geschrieben:Vielen Dank. :-)
Empfehlen Sie uns weiter ;-) und beantworte Fragen hier, dann haben alle was davon.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

3VAD_YNCAL
Beiträge: 51
Registriert: So Dez 04, 2011 3:14 am

Re: GTK+-3 Testproggi bricht mit (Speicherabzug geschrieben)

Beitrag von 3VAD_YNCAL » Di Aug 21, 2012 8:37 am

Xin hat geschrieben:Im C-Tutorial wird das als Beispiel verwandt, um eine Library anzusprechen. Den Quelltext findest Du hier.
Cool thx ;-)

Sorry, jetzt melde ich mich leider doch nochmal.

- Habe also alle gtk_widget_set_sensitive()-Funktionen rausgenommen.
- Bei gtk_box_new "FALSE" in "GTK_ORIENTATION_HORIZONTAL"
und "TRUE" in "GTK_ORIENTATION_VERTICAL" umgeändert.
- g_free( neu ); nach Namensänderung eingefügt.

- g_free( wp ); am Ende von main() eingefügt.

Doch das Programm bricht trotzdem mit derselben Fehlermeldung ab. :(

Hier nochmal der Quellcode:

Code: Alles auswählen

#include <glib/gstdio.h>
#include <gtk/gtk.h>
#include <unistd.h>

/* Struktur mit drei Widgets zur Änderung von Dateinamen. */
typedef struct
{
    GtkWidget *datei,
                        *name,
                        *neuer_name;
} W_Pack;

/* Prototypen */
static void datei_auswahl( GtkFileChooser *, W_Pack * );
static void name_aendern( GtkButton *, W_Pack * );

int main( int argc, char *argv[] )
{
    W_Pack *wp = ( W_Pack * )g_malloc( sizeof( W_Pack ) );
    GtkWidget *window, *hbox, *vbox;

    gtk_init( &argc, &argv );

    window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
    gtk_window_set_title( GTK_WINDOW( window ), "Dateinamen ändern" );
    gtk_container_set_border_width( GTK_CONTAINER( window ), 10 );

    g_signal_connect( G_OBJECT( window ), "destroy",
                                       G_CALLBACK( gtk_main_quit ), NULL );

    wp->datei = gtk_file_chooser_button_new( NULL,
                                                                                 GTK_FILE_CHOOSER_ACTION_OPEN ); /* Dateiauswahlknopf */

    /* home als Standardverzeichnis bei der Auswahl der gewünschten Datei. */
    gtk_file_chooser_set_current_folder( GTK_FILE_CHOOSER( wp->datei ), g_get_home_dir() );

    wp->name = gtk_entry_new(); /* Texteingabefeld für gewünschten Dateinamen */

    wp->neuer_name = gtk_button_new_from_stock( GTK_STOCK_APPLY ); /* Knopf zur Anwendung der Änderung */

    /* Dateiauswahlknopf mit der Funktion datei_auswahl() verknüpfen. */
    g_signal_connect( G_OBJECT( wp->datei ), "selection-changed",
                                       G_CALLBACK( datei_auswahl ),
                                       ( gpointer ) wp );

    /* Knopf zur Anwendung der Namensänderung mit der Funktion name_aendern() verknüpfen. */
    g_signal_connect( G_OBJECT( wp->neuer_name ), "clicked",
                                       G_CALLBACK( name_aendern ),
                                       ( gpointer ) wp );

    /* Texteingabefeld und Anwendungsknopf in eine horizontale Box packen. */
    hbox = gtk_box_new( GTK_ORIENTATION_HORIZONTAL, 5 );
    gtk_box_pack_start( GTK_BOX( hbox ), wp->name, TRUE, TRUE, 0 );
    gtk_box_pack_start( GTK_BOX( hbox ), wp->neuer_name, FALSE, TRUE, 0 );

    /* Dateiauswahlknopf und horizontale Box in eine vertikale Box packen. */
    vbox = gtk_box_new( GTK_ORIENTATION_VERTICAL, 5 );
    gtk_box_pack_start( GTK_BOX( vbox ), wp->datei, TRUE, TRUE, 0 );
    gtk_box_pack_start( GTK_BOX( vbox ), hbox, FALSE, TRUE, 0 );

    gtk_container_add( GTK_CONTAINER( window ), vbox );
    gtk_widget_show_all( window );

    gtk_main();

    g_free( wp );

    return 0;
}

static void datei_auswahl( GtkFileChooser *datei, W_Pack *wp )
{
    gchar *datei_name = gtk_file_chooser_get_filename( datei ); /* Name der ausgewählten Datei. */
    gint mode = g_access( datei_name, W_OK ); /* ausgewählte Datei auf Schreibrechte überprüfen */

GtkWidget *dialog = gtk_message_dialog_new( NULL,
						                                                          GTK_DIALOG_DESTROY_WITH_PARENT,
						                                                          GTK_MESSAGE_INFO,
						                                                          GTK_BUTTONS_OK,
						                                                          "Benutzer hat Schreibzugriff auf %s.", datei_name );
    gtk_window_set_title( GTK_WINDOW( dialog ), "Schreibzugriff_GRANTED" );

    if( mode == 0 )
    {
	gtk_dialog_run( GTK_DIALOG( dialog ) );
    	gtk_widget_destroy( dialog );
    }
}

static void name_aendern( GtkButton *neuer_name, W_Pack *wp )
{
    gchar *alt, *neu, *ort;

    GtkWidget *dialog = gtk_message_dialog_new( NULL,
						                                                          GTK_DIALOG_DESTROY_WITH_PARENT,
						                                                          GTK_MESSAGE_INFO,
						                                                          GTK_BUTTONS_OK,
						                                                          "Dateiname wurde geändert." );
    gtk_window_set_title( GTK_WINDOW( dialog ), "Info" );

    alt = gtk_file_chooser_get_filename( GTK_FILE_CHOOSER( wp->datei ) ); /* alte Datei im Auswahlknopf */
    ort = gtk_file_chooser_get_current_folder( GTK_FILE_CHOOSER( wp->datei ) ); /* Verzeichnis der ausgewählten Datei */

    /* neuer Name im Textfeld zum überschreiben des alten Namens im selben Ort */
    neu = g_strconcat( ort, "/", gtk_entry_get_text( GTK_ENTRY( wp->name ) ), NULL );

    g_rename( alt, neu ); /* alten mit neuen Namen überschreiben */

    g_free( neu );

    gtk_dialog_run( GTK_DIALOG( dialog ) );
    gtk_widget_destroy( dialog );
}
Also liegt es wohl auch nicht an den gtk_widget_set_sensitive()-Funktionen. Das ärgert mich jetzt wirklich. :x
Mit Gtk+-2 läuft es einwandfrei. Ich glaube du hast Recht, Xin.
Werde wohl doch erst Gtk2 verwenden.

Gruß Dave

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GTK+-3 Testproggi bricht mit (Speicherabzug geschrieben)

Beitrag von Xin » Di Aug 21, 2012 10:07 am

Ich hatte das Programm mit der gtk_widget_set_sensitive() Funktion fehlerfrei laufen. Aber ich weiß nicht warum.
Ich glaube auch, dass das Programm abstürzte, ich den gdb darauf ansetzte und es dann lief.
Deswegen habe ich den alten Code wieder genommen.

Valgrind meldet reichlich fehlerhafte Zugriffe an Stellen für die Du nicht verantwortlich bist - was mich ebenfalls eher auf Fehler in Gtk3 schließen lassen.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten