Commit 057bf043 authored by Ghislain MARY's avatar Ghislain MARY
Browse files

Merge branch '3.9.x'

parents d6bbd3db 731d4509
......@@ -25,10 +25,10 @@ project(LINPHONE C CXX)
set(LINPHONE_MAJOR_VERSION "3")
set(LINPHONE_MINOR_VERSION "8")
set(LINPHONE_MICRO_VERSION "5")
set(LINPHONE_MINOR_VERSION "9")
set(LINPHONE_MICRO_VERSION "0")
set(LINPHONE_VERSION "${LINPHONE_MAJOR_VERSION}.${LINPHONE_MINOR_VERSION}.${LINPHONE_MICRO_VERSION}")
set(LINPHONE_SO_VERSION "7")
set(LINPHONE_SO_VERSION "8")
file(GLOB LINPHONE_PO_FILES RELATIVE "${CMAKE_CURRENT_LIST_DIR}/po" "${CMAKE_CURRENT_LIST_DIR}/po/*.po")
string(REGEX REPLACE "([a-zA-Z_]+)\\.po" "\\1" LINPHONE_ALL_LANGS_LIST "${LINPHONE_PO_FILES}")
......@@ -126,6 +126,15 @@ if(ENABLE_GTK_UI)
message(WARNING "You need at least GTK 2.22 to enable the assistant")
set(ENABLE_ASSISTANT OFF CACHE BOOL "Turn on assistant compiling." FORCE)
endif()
if(APPLE)
find_package(GtkMacIntegration)
if(GTKMACINTEGRATION_FOUND)
set(HAVE_GTK_OSX 1)
add_definitions("${GTKMACINTEGRATION_CPPFLAGS}")
else()
message(WARNING "gtk-mac-integration not found. Please install gtk-osx-application package.")
endif()
endif()
endif()
if(ENABLE_ASSISTANT)
set(BUILD_WIZARD 1)
......
......@@ -226,7 +226,7 @@ Linphone.app:
MS2_PLUGINS_INSTALL_PREFIX=$(prefix) \
LINPHONE_ADDITIONAL_DEPENDENCIES_PREFIX=$(LINPHONE_ADDITIONAL_DEPENDENCIES_PREFIX) \
gtk-mac-bundler $(PACKAGE_BUNDLE_FILE)
patch -R ${BUNDLEDIR}/Contents/Resources/share/themes/Quartz/gtk-2.0/gtkrc ${srcdir}/build/macos/quartz-theme-gtkrc.patch
patch ${BUNDLEDIR}/Contents/Resources/share/themes/Quartz/gtk-2.0/gtkrc ${srcdir}/build/macos/quartz-theme-gtkrc.patch
rm -f ${BUNDLEDIR}/Contents/Resources/lib/libopenh264*
bundle: $(MACAPPNAME)
......
linphone-3.9.0 -- November 2nd, 2015
* Video recording of calls in MKV format
* Clickable URLs in chat view
* Add buttons to change the record and playback volumes during a call
* Add button to start chatting without having to create a contact first
* Some icon changes
* Call logs now stored in database
* Bug fixes
linphone-3.8.5 -- June 30th, 2015
* Fix bug about status icon on MacOSX. Attention request worked only once
* Fix crash at the end of the audio assistant
......
......@@ -89,9 +89,25 @@
${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/printbackends/*.so
</binary>
<!-- Starting with 2.24, gdk-pixbuf installs into its own directory. -->
<!-- Starting with 2.24, gdk-pixbuf installs into its own directory. Do
not install the svg pixbuf loader as it does not work. -->
<binary>
${prefix}/lib/gdk-pixbuf-2.0/${pkg:${gtk}:gtk_binary_version}/loaders/*.so
${prefix}/lib/gdk-pixbuf-2.0/${pkg:${gtk}:gtk_binary_version}/loaders/libpixbufloader-bmp.so
</binary>
<binary>
${prefix}/lib/gdk-pixbuf-2.0/${pkg:${gtk}:gtk_binary_version}/loaders/libpixbufloader-gif.so
</binary>
<binary>
${prefix}/lib/gdk-pixbuf-2.0/${pkg:${gtk}:gtk_binary_version}/loaders/libpixbufloader-icns.so
</binary>
<binary>
${prefix}/lib/gdk-pixbuf-2.0/${pkg:${gtk}:gtk_binary_version}/loaders/libpixbufloader-ico.so
</binary>
<binary>
${prefix}/lib/gdk-pixbuf-2.0/${pkg:${gtk}:gtk_binary_version}/loaders/libpixbufloader-jpeg.so
</binary>
<binary>
${prefix}/lib/gdk-pixbuf-2.0/${pkg:${gtk}:gtk_binary_version}/loaders/libpixbufloader-png.so
</binary>
......@@ -175,10 +191,14 @@
${prefix:linphone}/share/sounds/linphone/rings/oldphone.wav
</data>
<data dest="${bundle}/Contents/Resources/share/sounds/linphone/rings/toy-mono.wav">
${prefix:linphone}/share/sounds/linphone/rings/toy-mono.wav
</data>
<data dest="${bundle}/Contents/Resources/share/sounds/linphone/ringback.wav">
${prefix:linphone}/share/sounds/linphone/ringback.wav
</data>
<data dest="${bundle}/Contents/Resources/share/sounds/linphone/incoming_chat.wav">
${prefix:linphone}/share/sounds/linphone/incoming_chat.wav
</data>
......
85c85
< buttontype = "textured"
---
> buttontype = "aqua"
--- /opt/local/share/themes/Quartz/gtk-2.0/gtkrc 2015-03-25 15:29:53.000000000 +0100
+++ gtkrc 2015-10-29 13:43:15.000000000 +0100
@@ -12,7 +12,7 @@
gtk-menu-images = 0
gtk-toolbar-style = 0
gtk-enable-mnemonics = 0
-gtk-icon-sizes = "gtk-small-toolbar=16,16:gtk-large-toolbar=22,22"
+gtk-icon-sizes = "gtk-menu=12,12:gtk-button=16,16:gtk-small-toolbar=16,16:gtk-large-toolbar=22,22"
gtk-toolbar-icon-size = large-toolbar
gtk-error-bell = 0
gtk-show-input-method-menu = 0
@@ -82,7 +82,7 @@
engine "quartz"
{
- buttontype = "aqua"
+ buttontype = "textured"
}
}
############################################################################
# FindGtkMacIntegration.txt
# Copyright (C) 2015 Belledonne Communications, Grenoble France
#
############################################################################
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
############################################################################
#
# - Find the libgtkmacintegration include file and library
#
# GTKMACINTEGRATION_FOUND - system has libgtkmacintegration
# GTKMACINTEGRATION_INCLUDE_DIRS - the libgtkmacintegration include directory
# GTKMACINTEGRATION_LIBRARIES - The libraries needed to use libgtkmacintegration
# GTKMACINTEGRATION_CPPFLAGS - The cflags needed to use libgtkmacintegration
set(_GTKMACINTEGRATION_ROOT_PATHS
${CMAKE_INSTALL_PREFIX}
)
find_path(GTKMACINTEGRATION_INCLUDE_DIRS
NAMES gtkosxapplication.h
HINTS _GTKMACINTEGRATION_ROOT_PATHS
PATH_SUFFIXES include/gtkmacintegration-gtk2 include/gtkmacintegration
)
find_library(GTKMACINTEGRATION_LIBRARIES
NAMES gtkmacintegration-gtk2 gtkmacintegration
HINTS ${_GTKMACINTEGRATION_ROOT_PATHS}
PATH_SUFFIXES bin lib
)
set(GTKMACINTEGRATION_CPPFLAGS "-DMAC_INTEGRATION")
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(GTKMACINTEGRATION
DEFAULT_MSG
GTKMACINTEGRATION_INCLUDE_DIRS GTKMACINTEGRATION_LIBRARIES GTKMACINTEGRATION_CPPFLAGS
)
mark_as_advanced(GTKMACINTEGRATION_INCLUDE_DIRS GTKMACINTEGRATION_LIBRARIES GTKMACINTEGRATION_CPPFLAGS)
......@@ -38,6 +38,7 @@
#define PACKAGE_SOUND_DIR "${PACKAGE_SOUND_DIR}"
#cmakedefine BUILD_WIZARD
#cmakedefine HAVE_GTK_OSX 1
#cmakedefine HAVE_NOTIFY4
#cmakedefine HAVE_ZLIB 1
#cmakedefine HAVE_CU_GET_SUITE 1
......
dnl Process this file with autoconf to produce a configure script.
AC_INIT([linphone],[3.8.5],[linphone-developers@nongnu.org])
AC_INIT([linphone],[3.9.0],[linphone-developers@nongnu.org])
AC_CANONICAL_SYSTEM
AC_CONFIG_SRCDIR([coreapi/linphonecore.c])
......@@ -17,7 +17,7 @@ if test "$LINPHONE_EXTRA_VERSION" != "" ;then
LINPHONE_VERSION=$LINPHONE_VERSION.${LINPHONE_EXTRA_VERSION}
fi
LIBLINPHONE_SO_CURRENT=7 dnl increment this number when you add/change/remove an interface
LIBLINPHONE_SO_CURRENT=8 dnl increment this number when you add/change/remove an interface
LIBLINPHONE_SO_REVISION=0 dnl increment this number when you change source code, without changing interfaces; set to 0 when incrementing CURRENT
LIBLINPHONE_SO_AGE=0 dnl increment this number when you add an interface, set to 0 if you remove an interface
......
......@@ -201,7 +201,7 @@ LinphoneAccountCreatorStatus linphone_account_creator_set_username(LinphoneAccou
} else if ((status = validate_uri(username, NULL, NULL, NULL)) != LinphoneAccountCreatorOk) {
return status;
}
set_string(&creator->username, username);
set_string(&creator->username, username, TRUE);
return LinphoneAccountCreatorOk;
}
......@@ -214,7 +214,7 @@ LinphoneAccountCreatorStatus linphone_account_creator_set_password(LinphoneAccou
if (min_length > 0 && strlen(password) < min_length) {
return LinphoneAccountCreatorPasswordTooShort;
}
set_string(&creator->password, password);
set_string(&creator->password, password, FALSE);
return LinphoneAccountCreatorOk;
}
......@@ -238,7 +238,7 @@ LinphoneAccountCreatorStatus linphone_account_creator_set_domain(LinphoneAccount
if (validate_uri(NULL, domain, NULL, NULL) != 0) {
return LinphoneAccountCreatorDomainInvalid;
}
set_string(&creator->domain, domain);
set_string(&creator->domain, domain, TRUE);
return LinphoneAccountCreatorOk;
}
......@@ -250,7 +250,7 @@ LinphoneAccountCreatorStatus linphone_account_creator_set_route(LinphoneAccountC
if (validate_uri(NULL, NULL, route, NULL) != 0) {
return LinphoneAccountCreatorRouteInvalid;
}
set_string(&creator->route, route);
set_string(&creator->route, route, TRUE);
return LinphoneAccountCreatorOk;
}
......@@ -262,7 +262,7 @@ LinphoneAccountCreatorStatus linphone_account_creator_set_display_name(LinphoneA
if (validate_uri(NULL, NULL, NULL, display_name) != 0) {
return LinphoneAccountCreatorDisplayNameInvalid;
}
set_string(&creator->display_name, display_name);
set_string(&creator->display_name, display_name, FALSE);
return LinphoneAccountCreatorOk;
}
......@@ -274,7 +274,7 @@ LinphoneAccountCreatorStatus linphone_account_creator_set_email(LinphoneAccountC
if (!is_matching_regex(email, "^.+@.+\\.[A-Za-z]{2}[A-Za-z]*$")) {
return LinphoneAccountCreatorEmailInvalid;
}
set_string(&creator->email, email);
set_string(&creator->email, email, TRUE);
return LinphoneAccountCreatorOk;
}
......
......@@ -39,6 +39,8 @@ extern "C" {
#include <belle-sip/object.h>
#include <belle-sip/dict.h>
#include <ctype.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
......@@ -407,13 +409,18 @@ static MS2_INLINE int get_remaining_bandwidth_for_video(int total, int audio){
return ret;
}
static MS2_INLINE void set_string(char **dest, const char *src){
static MS2_INLINE void set_string(char **dest, const char *src, bool_t lowercase){
if (*dest){
ms_free(*dest);
*dest=NULL;
}
if (src)
if (src) {
*dest=ms_strdup(src);
if (lowercase) {
char *cur = *dest;
for (; *cur; cur++) *cur = tolower(*cur);
}
}
}
#define PAYLOAD_TYPE_ENABLED PAYLOAD_TYPE_USER_FLAG_0
......
......@@ -89,7 +89,6 @@ target_link_libraries(linphone-gtk linphone ${GTK2_LIBRARIES})
if(INTL_FOUND)
target_link_libraries(linphone-gtk ${INTL_LIBRARIES})
endif()
if(WIN32)
target_link_libraries(linphone-gtk Wininet)
endif()
......@@ -97,10 +96,13 @@ if(ENABLE_NOTIFY)
target_include_directories(linphone-gtk PUBLIC ${NOTIFY_INCLUDE_DIRS})
target_link_libraries(linphone-gtk ${NOTIFY_LIBRARIES})
endif()
if (HAVE_LIBUDEV_H)
if(HAVE_LIBUDEV_H)
target_link_libraries(linphone-gtk udev)
endif()
if(GTKMACINTEGRATION_FOUND)
target_include_directories(linphone-gtk PUBLIC ${GTKMACINTEGRATION_INCLUDE_DIRS})
target_link_libraries(linphone-gtk ${GTKMACINTEGRATION_LIBRARIES})
endif()
install(TARGETS linphone-gtk
RUNTIME DESTINATION bin
......
......@@ -185,20 +185,18 @@ void linphone_gtk_push_text(GtkWidget *w, const LinphoneAddress *from,
pos = end;
g_match_info_next(match_info, NULL);
}
if(pos < strlen(message)) write_body(buffer, &iter, &message[pos], -1, me, FALSE);
if(pos < strlen(message)) write_body(buffer, &iter, &message[pos], -1, me, FALSE);
gtk_text_buffer_insert(buffer,&iter,"\n",-1);
g_match_info_free(match_info);
}
t=linphone_chat_message_get_time(msg);
g_hash_table_insert(table,GUINT_TO_POINTER(linphone_chat_message_get_storage_id(msg)),GINT_TO_POINTER(gtk_text_iter_get_line(&iter)));
switch (linphone_chat_message_get_state (msg)){
case LinphoneChatMessageStateInProgress:
g_hash_table_insert(table,(gpointer)msg,GINT_TO_POINTER(gtk_text_iter_get_line(&iter)));
gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,"Sending ..",-1,
"status", me ? "me" : NULL, NULL);
//g_object_set_data(G_OBJECT(w),"table",table);
gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,_("Sending..."),-1,"status", me ? "me" : NULL, NULL);
break;
case LinphoneChatMessageStateDelivered:
t=linphone_chat_message_get_time(msg);
tnow=time(NULL);
tm=localtime(&tnow);
tnow_day=tm->tm_yday;
......@@ -209,15 +207,13 @@ void linphone_gtk_push_text(GtkWidget *w, const LinphoneAddress *from,
} else {
strftime(buf,80,"%H:%M",tm);
}
gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,buf,-1,
"status", me ? "me" : NULL, NULL);
gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,buf,-1,"status", me ? "me" : NULL, NULL);
break;
case LinphoneChatMessageStateNotDelivered:
gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,_("Message not sent"),-1,"status", me ? "me" : NULL, NULL);
break;
case LinphoneChatMessageStateNotDelivered:
gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,"Message not sent",-1,
"status", me ? "me" : NULL, NULL);
default:
break;
default : gtk_text_buffer_insert_with_tags_by_name(buffer,&iter,"Sending ..",-1,
"status", me ? "me" : NULL, NULL);
}
gtk_text_buffer_insert(buffer,&iter,"\n",-1);
g_idle_add((GSourceFunc)scroll_to_end,text);
......@@ -229,52 +225,47 @@ void update_chat_state_message(LinphoneChatMessageState state,LinphoneChatMessag
GtkWidget *page=(GtkWidget*)g_object_get_data(G_OBJECT(friendlist),"chatview");
GHashTable *table=(GHashTable*)g_object_get_data(G_OBJECT(page),"table");
if(page!=NULL){
if (page!=NULL) {
char buf[80];
time_t t;
struct tm *tm;
GtkTextView *text=GTK_TEXT_VIEW(linphone_gtk_get_widget(page,"textview"));
GtkTextBuffer *b=gtk_text_view_get_buffer(text);
GtkTextIter iter;
GtkTextIter end;
GtkTextIter start;
gchar *result;
gint line;
line=GPOINTER_TO_INT(g_hash_table_lookup(table,msg));
gtk_text_buffer_get_iter_at_line(b,&iter,line);
if(gtk_text_iter_get_chars_in_line(&iter) >0) {
gtk_text_buffer_get_iter_at_line_offset(b,&start,line,
gtk_text_iter_get_chars_in_line(&iter)-1);
}else{
gtk_text_buffer_get_iter_at_line_offset(b,&start,line,0);
}
gtk_text_buffer_get_iter_at_line_offset(b,&end,line,0);
gtk_text_buffer_delete(b,&start,&end);
gtk_text_buffer_get_iter_at_line(b,&iter,line);
switch (state) {
case LinphoneChatMessageStateInProgress:
result="Sending ..";
break;
case LinphoneChatMessageStateDelivered:
{
time_t t=time(NULL);
struct tm *tm=localtime(&t);
char buf[80];
strftime(buf,80,"%H:%M",tm);
result=buf;
g_hash_table_remove(table,msg);
break;
gpointer hash_table_ptr = g_hash_table_lookup(table,GUINT_TO_POINTER(linphone_chat_message_get_storage_id(msg)));
if (hash_table_ptr != NULL) {
line = GPOINTER_TO_INT(hash_table_ptr);
gtk_text_buffer_get_iter_at_line(b,&iter,line);
if(gtk_text_iter_get_chars_in_line(&iter) >0) {
gtk_text_buffer_get_iter_at_line_offset(b,&start,line,
gtk_text_iter_get_chars_in_line(&iter)-1);
}else{
gtk_text_buffer_get_iter_at_line_offset(b,&start,line,0);
}
case LinphoneChatMessageStateNotDelivered:
{
result="Message not sent";
g_hash_table_remove(table,msg);
break;
gtk_text_buffer_get_iter_at_line_offset(b,&end,line,0);
gtk_text_buffer_delete(b,&start,&end);
gtk_text_buffer_get_iter_at_line(b,&iter,line);
switch (state) {
case LinphoneChatMessageStateInProgress:
gtk_text_buffer_insert_with_tags_by_name(b,&iter,_("Sending..."),-1,"status", "me", NULL);
break;
case LinphoneChatMessageStateDelivered:
t=time(NULL);
tm=localtime(&t);
strftime(buf,80,"%H:%M",tm);
gtk_text_buffer_insert_with_tags_by_name(b,&iter,(gchar*)buf,-1,"status", "me", NULL);
break;
case LinphoneChatMessageStateNotDelivered:
gtk_text_buffer_insert_with_tags_by_name(b,&iter,_("Message not sent"),-1,"status", "me", NULL);
break;
default:
break;
}
default : result="Sending ..";
}
gtk_text_buffer_insert_with_tags_by_name(b,&iter,result,-1,
"status", "me", NULL);
//g_object_set_data(G_OBJECT(page),"table",table);
}
}
......
......@@ -5,6 +5,7 @@
<object class="GtkImage" id="zrtp_button_icon">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="pixel_size">16</property>
<property name="icon_name">linphone-security-pending</property>
</object>
<object class="GtkFrame" id="in_call_frame">
......@@ -96,7 +97,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Encryption status</property>
<property name="label">Encryption status</property>
</object>
<packing>
<property name="expand">True</property>
......
......@@ -835,7 +835,7 @@ void linphone_gtk_in_call_view_update_duration(LinphoneCall *call){
int seconds=duration%60;
int minutes=(duration/60)%60;
int hours=duration/3600;
snprintf(tmp,sizeof(tmp)-1,"%02i::%02i::%02i",hours,minutes,seconds);
snprintf(tmp,sizeof(tmp)-1,"%02i:%02i:%02i",hours,minutes,seconds);
gtk_label_set_text(GTK_LABEL(duration_label),tmp);
}
......
......@@ -347,3 +347,5 @@ LINPHONE_PUBLIC void linphone_gtk_notebook_current_page_changed(GtkNotebook *not
LINPHONE_PUBLIC void linphone_gtk_reload_sound_devices(void);
LINPHONE_PUBLIC void linphone_gtk_reload_video_devices(void);
LINPHONE_PUBLIC bool_t linphone_gtk_is_friend(LinphoneCore *lc, const char *contact);
LINPHONE_PUBLIC gboolean linphone_gtk_auto_answer_enabled(void);
LINPHONE_PUBLIC void linphone_gtk_update_status_bar_icons(void);
......@@ -781,6 +781,12 @@ bool_t linphone_gtk_video_enabled(void){
void linphone_gtk_show_main_window(){
GtkWidget *w=linphone_gtk_get_main_window();
#ifdef HAVE_GTK_OSX
GtkWidget *icon = linphone_gtk_get_widget(w, "history_tab_icon");
GtkWidget *label = linphone_gtk_get_widget(w, "history_tab_label");
gtk_misc_set_alignment(GTK_MISC(icon), 0.5f, 0.25f);
gtk_misc_set_alignment(GTK_MISC(label), 0.5f, 0.f);
#endif
gtk_widget_show(w);
gtk_window_present(GTK_WINDOW(w));
}
......@@ -1365,7 +1371,7 @@ static void linphone_gtk_call_state_changed(LinphoneCore *lc, LinphoneCall *call
linphone_gtk_create_in_call_view(call);
linphone_gtk_in_call_view_set_incoming(call);
linphone_gtk_status_icon_set_blinking(TRUE);
if (linphone_gtk_get_ui_config_int("auto_answer", 0)) {
if (linphone_gtk_auto_answer_enabled()) {
int delay = linphone_gtk_get_ui_config_int("auto_answer_delay", 2000);
linphone_call_ref(call);
g_timeout_add(delay, (GSourceFunc)linphone_gtk_auto_answer, call);
......@@ -1862,13 +1868,20 @@ gboolean linphone_gtk_keypad_destroyed_handler(void) {
return FALSE;
}
static void linphone_gtk_init_main_window(){
void linphone_gtk_update_status_bar_icons(void) {
GtkWidget *mw = linphone_gtk_get_main_window();
GtkWidget *icon = linphone_gtk_get_widget(mw, "autoanswer_icon");
gtk_widget_set_visible(icon, linphone_gtk_auto_answer_enabled());
}
static void linphone_gtk_init_main_window(void){
GtkWidget *main_window;
linphone_gtk_configure_main_window();
linphone_gtk_manage_login();
linphone_gtk_load_identities();
linphone_gtk_set_my_presence(linphone_core_get_presence_info(linphone_gtk_get_core()));
linphone_gtk_show_friends();
linphone_gtk_update_status_bar_icons();
load_uri_history();
linphone_core_reset_missed_calls_count(linphone_gtk_get_core());
main_window=linphone_gtk_get_main_window();
......@@ -2244,14 +2257,23 @@ GtkWidget *linphone_gtk_make_tab_header(const gchar *label, const gchar *icon_na
if(icon_name) {
GtkWidget *icon=gtk_image_new_from_icon_name(icon_name, GTK_ICON_SIZE_MENU);
#ifdef HAVE_GTK_OSX
gtk_misc_set_alignment(GTK_MISC(icon), 0.5f, 0.25f);
#endif
gtk_box_pack_start (GTK_BOX(tab_header),icon,FALSE,FALSE,4);
}
#ifdef HAVE_GTK_OSX
gtk_misc_set_alignment(GTK_MISC(label_widget), 0.5f, 0.f);
#endif
gtk_box_pack_start (GTK_BOX(tab_header),label_widget,FALSE,FALSE,0);
if(show_quit_button) {
GtkWidget *button = gtk_button_new();
GtkWidget *button_image=gtk_image_new_from_stock(GTK_STOCK_CLOSE,GTK_ICON_SIZE_MENU);
gtk_button_set_image(GTK_BUTTON(button),button_image);
gtk_button_set_relief(GTK_BUTTON(button),GTK_RELIEF_NONE);
#ifdef HAVE_GTK_OSX
gtk_misc_set_alignment(GTK_MISC(button_image), 0.5f, 0.f);
#endif
g_signal_connect_swapped(G_OBJECT(button),"clicked",cb,user_data);
gtk_box_pack_end(GTK_BOX(tab_header),button,FALSE,FALSE,4);
g_object_set_data(G_OBJECT(tab_header), "button", button);
......
......@@ -110,7 +110,6 @@
<object class="GtkImage" id="properties_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="yalign">0.49000000953674316</property>
<property name="stock">gtk-properties</property>
<property name="icon-size">1</property>
</object>
......@@ -235,6 +234,7 @@
<property name="can_focus">False</property>
<property name="use_underline">True</property>
<property name="use_stock">True</property>
<accelerator key="q" signal="activate" modifiers="GDK_CONTROL_MASK"/>
<signal name="activate" handler="gtk_main_quit" swapped="no"/>
</object>
</child>
......@@ -269,6 +269,7 @@
<property name="can_focus">False</property>
<property name="image">info_image</property>
<property name="use_stock">False</property>
<accelerator key="d" signal="activate" modifiers="GDK_CONTROL_MASK"/>
<signal name="activate" handler="linphone_gtk_log_show" swapped="no"/>
</object>
</child>
......@@ -853,7 +854,6 @@
<object class="GtkLabel" id="history_tab_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="yalign">0.49000000953674316</property>
<property name="label" translatable="yes">Recent calls</property>
</object>
<packing>
......@@ -988,15 +988,39 @@
</packing>
</child>
<child>
<object class="GtkStatusbar" id="status_bar">
<object class="GtkHBox" id="status_bar_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<object class="GtkStatusbar" id="status_bar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="has_resize_grip">False</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="autoanswer_icon">
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Autoanswer is enabled</property>
<property name="pixel_size">16</property>
<property name="icon_name">linphone-warning</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>