diff options
Diffstat (limited to 'gtk/src/callbacks.c')
-rw-r--r-- | gtk/src/callbacks.c | 93 |
1 files changed, 79 insertions, 14 deletions
diff --git a/gtk/src/callbacks.c b/gtk/src/callbacks.c index 649e7d227..5ac796680 100644 --- a/gtk/src/callbacks.c +++ b/gtk/src/callbacks.c @@ -4083,6 +4083,15 @@ show_activity_menu_toggled_cb(GtkWidget *widget, signal_user_data_t *ud) } G_MODULE_EXPORT gboolean +presets_window_delete_cb(GtkWidget *xwidget, GdkEvent *event, signal_user_data_t *ud) +{ + gtk_widget_set_visible(xwidget, FALSE); + GtkWidget *widget = GHB_WIDGET(ud->builder, "show_presets"); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(widget), FALSE); + return TRUE; +} + +G_MODULE_EXPORT gboolean activity_window_delete_cb(GtkWidget *xwidget, GdkEvent *event, signal_user_data_t *ud) { gtk_widget_set_visible(xwidget, FALSE); @@ -4250,25 +4259,47 @@ show_queue_menu_toggled_cb(GtkWidget *widget, signal_user_data_t *ud) gtk_toggle_tool_button_set_active(button, active); } -G_MODULE_EXPORT void -show_presets_toggled_cb(GtkWidget *widget, signal_user_data_t *ud) +static void +presets_window_set_visible(signal_user_data_t *ud, gboolean visible) { - GtkWidget *frame; - GtkWindow *hb_window; + GtkWidget * presets_window; + GtkWidget * hb_window; + int x, y; - g_debug("show_presets_clicked_cb ()"); - frame = GHB_WIDGET (ud->builder, "presets_frame"); - ghb_widget_to_setting(ud->prefs, widget); - if (ghb_dict_get_bool(ud->prefs, "show_presets")) + hb_window = GHB_WIDGET(ud->builder, "hb_window"); + if (!gtk_widget_is_visible(hb_window)) { - gtk_widget_show_now(frame); + return; } - else + + presets_window = GHB_WIDGET(ud->builder, "presets_window"); + gtk_widget_set_visible(presets_window, visible); + if (visible) { - gtk_widget_hide(frame); - hb_window = GTK_WINDOW(GHB_WIDGET (ud->builder, "hb_window")); - gtk_window_resize(hb_window, 16, 16); + int w, h; + w = ghb_dict_get_int(ud->prefs, "presets_window_width"); + h = ghb_dict_get_int(ud->prefs, "presets_window_height"); + if (w > 200 && h > 200) + { + gtk_window_resize(GTK_WINDOW(presets_window), w, h); + } + gtk_window_get_position(GTK_WINDOW(hb_window), &x, &y); + x -= w + 10; + if (x < 0) + { + gtk_window_move(GTK_WINDOW(hb_window), w + 10, y); + x = 0; + } + gtk_window_move(GTK_WINDOW(presets_window), x, y); } +} + +G_MODULE_EXPORT void +show_presets_toggled_cb(GtkWidget *widget, signal_user_data_t *ud) +{ + ghb_widget_to_setting(ud->prefs, widget); + presets_window_set_visible(ud, ghb_dict_get_bool(ud->prefs, + "show_presets")); ghb_pref_save(ud->prefs, "show_presets"); } @@ -5783,12 +5814,46 @@ ghb_notify_done(signal_user_data_t *ud) } G_MODULE_EXPORT gboolean +window_map_cb( + GtkWidget *widget, + GdkEventAny *event, + signal_user_data_t *ud) +{ + presets_window_set_visible(ud, ghb_dict_get_bool(ud->prefs, + "show_presets")); + return FALSE; +} + +G_MODULE_EXPORT gboolean +presets_window_configure_cb( + GtkWidget *widget, + GdkEventConfigure *event, + signal_user_data_t *ud) +{ + if (gtk_widget_get_visible(widget)) + { + gint w, h; + w = ghb_dict_get_int(ud->prefs, "presets_window_width"); + h = ghb_dict_get_int(ud->prefs, "presets_window_height"); + + if ( w != event->width || h != event->height ) + { + ghb_dict_set_int(ud->prefs, "presets_window_width", event->width); + ghb_dict_set_int(ud->prefs, "presets_window_height", event->height); + ghb_pref_set(ud->prefs, "presets_window_width"); + ghb_pref_set(ud->prefs, "presets_window_height"); + ghb_prefs_store(); + } + } + return FALSE; +} + +G_MODULE_EXPORT gboolean window_configure_cb( GtkWidget *widget, GdkEventConfigure *event, signal_user_data_t *ud) { - //g_message("preview_configure_cb()"); if (gtk_widget_get_visible(widget)) { gint w, h; |