Skip to content
Snippets Groups Projects
Commit df5f1976 authored by Emmanuel Milou's avatar Emmanuel Milou
Browse files

[#2317] [#2319] Fix address book toggle button contextual behaviour

parent ce02ee1c
No related branches found
No related tags found
Loading
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include <uimanager.h> #include <uimanager.h>
static GtkWidget *toolbar; static GtkWidget *toolbar;
static GtkWidget *toolbarWindows;
guint transfertButtonConnId; //The button toggled signal connection ID guint transfertButtonConnId; //The button toggled signal connection ID
...@@ -57,9 +58,9 @@ enum { ...@@ -57,9 +58,9 @@ enum {
}; };
static gboolean is_inserted (GtkWidget* button) static gboolean is_inserted (GtkWidget* button, GtkWidget *current_toolbar)
{ {
return (GTK_WIDGET (button)->parent == GTK_WIDGET (toolbar)); return (GTK_WIDGET (button)->parent == GTK_WIDGET (current_toolbar));
} }
...@@ -220,21 +221,42 @@ void update_actions() ...@@ -220,21 +221,42 @@ void update_actions()
gtk_action_set_sensitive (GTK_ACTION (copyAction), FALSE); gtk_action_set_sensitive (GTK_ACTION (copyAction), FALSE);
gtk_action_set_sensitive (GTK_ACTION (voicemailAction), FALSE); gtk_action_set_sensitive (GTK_ACTION (voicemailAction), FALSE);
gtk_widget_set_sensitive (GTK_WIDGET (transferToolbar), FALSE); gtk_widget_set_sensitive (GTK_WIDGET (transferToolbar), FALSE);
gtk_widget_set_sensitive( GTK_WIDGET(contactButton), FALSE);
gtk_widget_set_tooltip_text (GTK_WIDGET (contactButton), _("No address book selected"));
//g_object_ref (holdToolbar); //g_object_ref (holdToolbar);
//g_object_ref (unholdButton); //g_object_ref (unholdButton);
if (is_inserted (GTK_WIDGET (holdToolbar)))
g_object_ref (contactButton);
if (is_inserted (GTK_WIDGET(contactButton), GTK_WIDGET (toolbarWindows)))
{
gtk_container_remove (GTK_CONTAINER (toolbarWindows), GTK_WIDGET (contactButton));
}
if (is_inserted (GTK_WIDGET (holdToolbar), GTK_WIDGET (toolbar)))
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (holdToolbar)); gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (holdToolbar));
if (is_inserted (GTK_WIDGET (offHoldToolbar))) if (is_inserted (GTK_WIDGET (offHoldToolbar), GTK_WIDGET (toolbar)))
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (offHoldToolbar)); gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (offHoldToolbar));
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar), 3); gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (holdToolbar), 3);
if (is_inserted (GTK_WIDGET (newCallWidget))) if (is_inserted (GTK_WIDGET (newCallWidget), GTK_WIDGET (toolbar)))
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (newCallWidget)); gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (newCallWidget));
if (is_inserted (GTK_WIDGET (pickUpWidget))) if (is_inserted (GTK_WIDGET (pickUpWidget), GTK_WIDGET (toolbar)))
gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (pickUpWidget)); gtk_container_remove (GTK_CONTAINER (toolbar), GTK_WIDGET (pickUpWidget));
gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (newCallWidget), 0); gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (newCallWidget), 0);
// If addressbook support has been enabled and all addressbooks are loaded, display the icon
if (addressbook_is_enabled () && addressbook_is_ready()) {
gtk_toolbar_insert (GTK_TOOLBAR (toolbarWindows), contactButton, 2);
// Make the icon clickable only if at least one address book is active
if (addressbook_is_active ())
{
gtk_widget_set_sensitive( GTK_WIDGET(contactButton), TRUE);
gtk_widget_set_tooltip_text (GTK_WIDGET (contactButton), _("Address book"));
}
}
g_signal_handler_block ( (gpointer)transferToolbar, transfertButtonConnId); g_signal_handler_block ( (gpointer)transferToolbar, transfertButtonConnId);
gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (transferToolbar), FALSE); gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (transferToolbar), FALSE);
g_signal_handler_unblock ( (gpointer)transferToolbar, transfertButtonConnId); g_signal_handler_unblock ( (gpointer)transferToolbar, transfertButtonConnId);
...@@ -802,7 +824,7 @@ static const GtkRadioActionEntry radio_menu_entries[] = { ...@@ -802,7 +824,7 @@ static const GtkRadioActionEntry radio_menu_entries[] = {
{"CallWindow", GTK_STOCK_CALLS, "_Call window", NULL, "Calls list", CALLTREE_CALLS}, {"CallWindow", GTK_STOCK_CALLS, "_Call window", NULL, "Calls list", CALLTREE_CALLS},
{"History", "appointment-soon", "_History", NULL, "Calls history", CALLTREE_HISTORY}, {"History", "appointment-soon", "_History", NULL, "Calls history", CALLTREE_HISTORY},
{"Addressbook", GTK_STOCK_ADDRESSBOOK, "_Address book", NULL, "Address book", CALLTREE_CONTACTS} {"Addressbook", GTK_STOCK_ADDRESSBOOK, "_Address book", NULL, NULL, CALLTREE_CONTACTS}
}; };
...@@ -1394,14 +1416,12 @@ GtkWidget* create_toolbar_actions (GtkUIManager *ui_manager) ...@@ -1394,14 +1416,12 @@ GtkWidget* create_toolbar_actions (GtkUIManager *ui_manager)
GtkWidget* create_toolbar_windows (GtkUIManager *ui_manager) GtkWidget* create_toolbar_windows (GtkUIManager *ui_manager)
{ {
GtkWidget *toolbar; toolbarWindows = gtk_ui_manager_get_widget (ui_manager, "/ToolbarWindows");
toolbar = gtk_ui_manager_get_widget (ui_manager, "/ToolbarWindows");
active_calltree = current_calls; active_calltree = current_calls;
historyButton = gtk_ui_manager_get_widget (ui_manager, "/ToolbarWindows/HistoryToolbar"); historyButton = gtk_ui_manager_get_widget (ui_manager, "/ToolbarWindows/HistoryToolbar");
contactButton = gtk_ui_manager_get_widget (ui_manager, "/ToolbarWindows/AddressbookToolbar"); contactButton = gtk_ui_manager_get_widget (ui_manager, "/ToolbarWindows/AddressbookToolbar");
currentCallsButton = gtk_ui_manager_get_widget (ui_manager, "/ToolbarWindows/CallWindowToolbar"); currentCallsButton = gtk_ui_manager_get_widget (ui_manager, "/ToolbarWindows/CallWindowToolbar");
return toolbar; return toolbarWindows;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment