Commit 43282365304e601fc3cc80d4035ee7aa716b0da7

Authored by Perry Werneck
1 parent 9767f7f9
Exists in master and in 1 other branch develop

Implementing accelerator change.

Showing 1 changed file with 40 additions and 16 deletions   Show diff stats
src/dialogs/settings/accelerator.c
@@ -102,7 +102,6 @@ @@ -102,7 +102,6 @@
102 { 102 {
103 // Create Accelerator list 103 // Create Accelerator list
104 GtkCellRenderer * text_renderer = gtk_cell_renderer_text_new(); 104 GtkCellRenderer * text_renderer = gtk_cell_renderer_text_new();
105 -  
106 GtkCellRenderer * accel_renderer[] = { gtk_cell_renderer_accel_new(), gtk_cell_renderer_accel_new() }; 105 GtkCellRenderer * accel_renderer[] = { gtk_cell_renderer_accel_new(), gtk_cell_renderer_accel_new() };
107 106
108 g_object_set( 107 g_object_set(
@@ -117,8 +116,8 @@ @@ -117,8 +116,8 @@
117 "editable", TRUE, 116 "editable", TRUE,
118 NULL); 117 NULL);
119 118
120 - g_signal_connect (G_OBJECT (accel_renderer[0]), "accel_edited", G_CALLBACK (accel_edited), widget);  
121 - g_signal_connect (G_OBJECT (accel_renderer[1]), "accel_edited", G_CALLBACK (alternative_edited), widget); 119 + g_signal_connect (G_OBJECT(accel_renderer[0]), "accel_edited", G_CALLBACK (accel_edited), widget);
  120 + g_signal_connect (G_OBJECT(accel_renderer[1]), "accel_edited", G_CALLBACK (alternative_edited), widget);
122 121
123 widget->store = GTK_LIST_STORE(gtk_list_store_new(COLUMNS, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT, G_TYPE_UINT)); 122 widget->store = GTK_LIST_STORE(gtk_list_store_new(COLUMNS, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT, G_TYPE_UINT));
124 123
@@ -205,7 +204,7 @@ static gboolean check_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter @@ -205,7 +204,7 @@ static gboolean check_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter
205 size_t ix; 204 size_t ix;
206 GValue value; 205 GValue value;
207 206
208 - debug("%s",__FUNCTION__); 207 +// debug("%s",__FUNCTION__);
209 208
210 for(ix = 0; ix < 2; ix++) 209 for(ix = 0; ix < 2; ix++)
211 { 210 {
@@ -224,7 +223,7 @@ static gboolean check_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter @@ -224,7 +223,7 @@ static gboolean check_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter
224 223
225 if(key == info->accel_key && mask == info->mask) { 224 if(key == info->accel_key && mask == info->mask) {
226 225
227 - debug("************ Index %d cmp=%d",(unsigned int) ix, gtk_tree_path_compare(path, info->path)); 226 + debug("Index %d cmp=%d",(unsigned int) ix, gtk_tree_path_compare(path, info->path));
228 GtkWidget * dialog; 227 GtkWidget * dialog;
229 228
230 if(gtk_tree_path_compare(path, info->path)) 229 if(gtk_tree_path_compare(path, info->path))
@@ -261,7 +260,7 @@ static gboolean check_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter @@ -261,7 +260,7 @@ static gboolean check_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter
261 dialog = gtk_message_dialog_new_with_markup( 260 dialog = gtk_message_dialog_new_with_markup(
262 GTK_WINDOW(gtk_widget_get_toplevel(info->widget)), 261 GTK_WINDOW(gtk_widget_get_toplevel(info->widget)),
263 GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT, 262 GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
264 - GTK_MESSAGE_QUESTION, 263 + GTK_MESSAGE_INFO,
265 GTK_BUTTONS_CANCEL, 264 GTK_BUTTONS_CANCEL,
266 _( "The selected accelerator is in use by the same action" ) 265 _( "The selected accelerator is in use by the same action" )
267 ); 266 );
@@ -275,6 +274,13 @@ static gboolean check_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter @@ -275,6 +274,13 @@ static gboolean check_accel(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter
275 if(info->response == GTK_RESPONSE_YES) 274 if(info->response == GTK_RESPONSE_YES)
276 { 275 {
277 debug("%s: Removing accelerator from the other action",__FUNCTION__); 276 debug("%s: Removing accelerator from the other action",__FUNCTION__);
  277 + gtk_list_store_set(
  278 + GTK_LIST_STORE(model),
  279 + iter,
  280 + columns[(ix * 2)], 0,
  281 + columns[(ix * 2)+1], 0,
  282 + -1
  283 + );
278 284
279 } 285 }
280 286
@@ -322,26 +328,44 @@ static void change_accel(V3270AcceleratorSettings *widget, gchar *path, guint ac @@ -322,26 +328,44 @@ static void change_accel(V3270AcceleratorSettings *widget, gchar *path, guint ac
322 328
323 gtk_tree_model_foreach(GTK_TREE_MODEL(widget->store), (GtkTreeModelForeachFunc) check_accel, &info); 329 gtk_tree_model_foreach(GTK_TREE_MODEL(widget->store), (GtkTreeModelForeachFunc) check_accel, &info);
324 330
325 - gtk_tree_path_free(info.path);  
326 -  
327 - if(info.response == GTK_RESPONSE_YES) 331 + if(info.response == GTK_RESPONSE_YES && gtk_tree_model_get_iter(GTK_TREE_MODEL(widget->store),&iter,info.path))
328 { 332 {
329 - debug("%s: Aplicar alteração",__FUNCTION__); 333 + debug("%s: Setting the new accelerator to %u/%d",__FUNCTION__,accel_key,mask);
  334 +
  335 + gtk_list_store_set(
  336 + widget->store,
  337 + &iter,
  338 + id_key, accel_key,
  339 + id_mask, mask,
  340 + -1
  341 + );
330 342
331 } 343 }
332 344
  345 + gtk_tree_path_free(info.path);
  346 +
333 } 347 }
334 348
335 -static void accel_edited(GtkCellRendererAccel *renderer, gchar *path, guint accel_key, GdkModifierType mask, guint hardware_keycode, V3270AcceleratorSettings *widget) 349 +static void accel_edited(GtkCellRendererAccel G_GNUC_UNUSED(*accel), gchar *path, guint accel_key, GdkModifierType mask, guint G_GNUC_UNUSED(hardware_keycode), V3270AcceleratorSettings *widget)
336 { 350 {
337 - debug("%s(%s)",__FUNCTION__,path);  
338 - change_accel(widget, path, accel_key, mask, MAIN_MASK, MAIN_VALUE); 351 +#ifdef DEBUG
  352 + {
  353 + g_autofree gchar * keyname = gtk_accelerator_name(accel_key,mask);
  354 + debug("%s(%s) = %u/%d (%s)",__FUNCTION__,path,accel_key,mask,keyname);
  355 + }
  356 +#endif // DEBUG
  357 + change_accel(widget, path, accel_key, mask, MAIN_VALUE, MAIN_MASK);
339 } 358 }
340 359
341 -static void alternative_edited(GtkCellRendererAccel *renderer, gchar *path, guint accel_key, GdkModifierType mask, guint hardware_keycode, V3270AcceleratorSettings *widget) 360 +static void alternative_edited(GtkCellRendererAccel G_GNUC_UNUSED(*accel), gchar *path, guint accel_key, GdkModifierType mask, guint G_GNUC_UNUSED(hardware_keycode), V3270AcceleratorSettings *widget)
342 { 361 {
343 - debug("%s(%s)",__FUNCTION__,path);  
344 - change_accel(widget, path, accel_key, mask, ALTERNATIVE_MASK, ALTERNATIVE_VALUE); 362 +#ifdef DEBUG
  363 + {
  364 + g_autofree gchar * keyname = gtk_accelerator_name(accel_key,mask);
  365 + debug("%s(%s) = %u/%d (%s)",__FUNCTION__,path,accel_key,mask,keyname);
  366 + }
  367 +#endif // DEBUG
  368 + change_accel(widget, path, accel_key, mask, ALTERNATIVE_VALUE, ALTERNATIVE_MASK);
345 } 369 }
346 370
347 void load(GtkWidget *widget, GtkWidget *terminal) 371 void load(GtkWidget *widget, GtkWidget *terminal)