fix crash in log window after it is closed by the user.

This commit is contained in:
Simon Morlat 2010-02-12 12:15:58 +01:00
parent 4297689e9e
commit 01cd17d3c6
2 changed files with 34 additions and 14 deletions

View file

@ -1,15 +1,15 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.4.5 on Thu Jul 31 12:01:20 2008 -->
<?xml version="1.0"?>
<glade-interface>
<!-- interface-requires gtk+ 2.16 -->
<!-- interface-naming-policy toplevel-contextual -->
<widget class="GtkDialog" id="log">
<property name="width_request">540</property>
<property name="height_request">290</property>
<property name="border_width">5</property>
<property name="title" translatable="yes">Linphone debug window</property>
<property name="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
<property name="window_position">center-on-parent</property>
<property name="icon">linphone2.png</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="type_hint">dialog</property>
<property name="deletable">False</property>
<property name="has_separator">False</property>
<signal name="response" handler="gtk_widget_hide"/>
@ -21,17 +21,17 @@
<widget class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
<property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
<property name="window_placement">GTK_CORNER_BOTTOM_LEFT</property>
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">automatic</property>
<property name="window_placement">bottom-left</property>
<property name="window_placement_set">True</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<property name="shadow_type">in</property>
<child>
<widget class="GtkTextView" id="textview">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="editable">False</property>
<property name="wrap_mode">GTK_WRAP_WORD</property>
<property name="wrap_mode">word</property>
</widget>
</child>
</widget>
@ -42,27 +42,30 @@
<child internal-child="action_area">
<widget class="GtkHButtonBox" id="dialog-action_area1">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<property name="layout_style">end</property>
<child>
<placeholder/>
</child>
<child>
<widget class="GtkButton" id="button1">
<property name="label" translatable="yes">gtk-close</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="label" translatable="yes">gtk-close</property>
<property name="use_stock">True</property>
<property name="response_id">0</property>
<signal name="clicked" handler="linphone_gtk_log_hide"/>
</widget>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="expand">False</property>
<property name="pack_type">GTK_PACK_END</property>
<property name="pack_type">end</property>
<property name="position">0</property>
</packing>
</child>
</widget>

View file

@ -213,12 +213,29 @@ static void linphone_gtk_log_file(OrtpLogLevel lev, const char *msg)
}
}
static gboolean delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
{
gtk_widget_hide (widget);
return TRUE;
}
void linphone_gtk_log_hide(){
if (log_window)
gtk_widget_hide(log_window);
}
void linphone_gtk_create_log_window(void){
GtkTextBuffer *b;
log_window=linphone_gtk_create_window("log");
b=gtk_text_view_get_buffer(GTK_TEXT_VIEW(linphone_gtk_get_widget(log_window,"textview")));
gtk_text_buffer_create_tag(b,"red","foreground","red",NULL);
gtk_text_buffer_create_tag(b,"orange","foreground","orange",NULL);
/*prevent the log window from being destroyed*/
g_signal_connect (G_OBJECT (log_window), "delete-event",
G_CALLBACK (delete_event_cb), NULL);
}
void linphone_gtk_destroy_log_window(void){