Skip to content

Commit

Permalink
skins: Call "window close" hook to check whether we need to quit or n…
Browse files Browse the repository at this point in the history
…ot. Closes: #178.
  • Loading branch information
jlindgren90 committed Sep 30, 2012
1 parent 8e2b3d1 commit 64c6bd1
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 51 deletions.
12 changes: 12 additions & 0 deletions src/skins/plugin.c
Expand Up @@ -23,6 +23,7 @@
#include <audacious/drct.h>
#include <audacious/i18n.h>
#include <audacious/plugin.h>
#include <libaudcore/hook.h>
#include <libaudgui/libaudgui.h>
#include <libaudgui/libaudgui-gtk.h>

Expand Down Expand Up @@ -177,3 +178,14 @@ static void show_error_message (const gchar * text)
{
audgui_simple_message (& error_win, GTK_MESSAGE_ERROR, _("Error"), _(text));
}

bool_t handle_window_close (void)
{
bool_t handled = FALSE;
hook_call ("window close", & handled);

if (! handled)
aud_drct_quit ();

return TRUE;
}
6 changes: 4 additions & 2 deletions src/skins/plugin.h
Expand Up @@ -21,14 +21,16 @@
#ifndef PLUGIN_SKINS_H
#define PLUGIN_SKINS_H

#include <glib.h>
#include <libaudcore/core.h>

enum {
SKINS_PATH_USER_SKIN_DIR,
SKINS_PATH_SKIN_THUMB_DIR,
SKINS_PATH_COUNT
};

extern gchar *skins_paths[];
extern char * skins_paths[];

bool_t handle_window_close (void);

#endif
16 changes: 4 additions & 12 deletions src/skins/ui_equalizer.c
Expand Up @@ -35,6 +35,7 @@

#include "actions-equalizer.h"
#include "config.h"
#include "plugin.h"
#include "skins_cfg.h"
#include "ui_equalizer.h"
#include "ui_main.h"
Expand Down Expand Up @@ -204,12 +205,6 @@ equalizerwin_close_cb(void)
equalizerwin_show(FALSE);
}

static gboolean equalizerwin_delete(GtkWidget *widget, void *data)
{
aud_drct_quit ();
return TRUE;
}

static void eqwin_volume_set_knob (void)
{
gint pos = hslider_get_pos (equalizerwin_volume);
Expand Down Expand Up @@ -386,12 +381,9 @@ equalizerwin_create_window(void)

gtk_widget_set_app_paintable(equalizerwin, TRUE);

g_signal_connect(equalizerwin, "delete_event",
G_CALLBACK(equalizerwin_delete), NULL);
g_signal_connect(equalizerwin, "button_press_event",
G_CALLBACK(equalizerwin_press), NULL);
g_signal_connect ((GObject *) equalizerwin, "key-press-event", (GCallback)
mainwin_keypress, 0);
g_signal_connect (equalizerwin, "delete-event", (GCallback) handle_window_close, NULL);
g_signal_connect (equalizerwin, "button-press-event", (GCallback) equalizerwin_press, NULL);
g_signal_connect (equalizerwin, "key-press-event", (GCallback) mainwin_keypress, NULL);
}

static void equalizerwin_destroyed (void)
Expand Down
17 changes: 5 additions & 12 deletions src/skins/ui_main.c
Expand Up @@ -42,6 +42,7 @@
#include "actions-playlist.h"
#include "config.h"
#include "dnd.h"
#include "plugin.h"
#include "skins_cfg.h"
#include "ui_equalizer.h"
#include "ui_hints.h"
Expand Down Expand Up @@ -1245,7 +1246,7 @@ mainwin_create_widgets(void)

mainwin_close = button_new (9, 9, 18, 0, 18, 9, SKIN_TITLEBAR, SKIN_TITLEBAR);
window_put_widget (mainwin, FALSE, mainwin_close, 264, 3);
button_on_release (mainwin_close, (ButtonCB) aud_drct_quit);
button_on_release (mainwin_close, (ButtonCB) handle_window_close);

mainwin_rew = button_new (23, 18, 0, 0, 0, 18, SKIN_CBUTTONS, SKIN_CBUTTONS);
window_put_widget (mainwin, FALSE, mainwin_rew, 16, 88);
Expand Down Expand Up @@ -1377,7 +1378,7 @@ mainwin_create_widgets(void)

mainwin_shaded_close = button_new (9, 9, 18, 0, 18, 9, SKIN_TITLEBAR, SKIN_TITLEBAR);
window_put_widget (mainwin, TRUE, mainwin_shaded_close, 264, 3);
button_on_release (mainwin_shaded_close, (ButtonCB) aud_drct_quit);
button_on_release (mainwin_shaded_close, (ButtonCB) handle_window_close);

mainwin_srew = button_new_small (8, 7);
window_put_widget (mainwin, TRUE, mainwin_srew, 169, 4);
Expand Down Expand Up @@ -1474,12 +1475,6 @@ static gboolean state_cb (GtkWidget * widget, GdkEventWindowState * event,
return TRUE;
}

static gboolean delete_cb (GtkWidget * widget, GdkEvent * event, void * unused)
{
aud_drct_quit ();
return TRUE;
}

static void mainwin_draw (GtkWidget * window, cairo_t * cr)
{
gint width = config.player_shaded ? MAINWIN_SHADED_WIDTH : active_skin->properties.mainwin_width;
Expand Down Expand Up @@ -1514,10 +1509,8 @@ mainwin_create_window(void)

ui_main_evlistener_init();

g_signal_connect ((GObject *) mainwin, "window-state-event", (GCallback)
state_cb, NULL);
g_signal_connect ((GObject *) mainwin, "delete-event", (GCallback)
delete_cb, NULL);
g_signal_connect ((GObject *) mainwin, "window-state-event", (GCallback) state_cb, NULL);
g_signal_connect ((GObject *) mainwin, "delete-event", (GCallback) handle_window_close, NULL);
}

void mainwin_unhook (void)
Expand Down
36 changes: 11 additions & 25 deletions src/skins/ui_playlist.c
Expand Up @@ -41,6 +41,7 @@
#include "config.h"
#include "dnd.h"
#include "drag-handle.h"
#include "plugin.h"
#include "skins_cfg.h"
#include "ui_main.h"
#include "ui_manager.h"
Expand Down Expand Up @@ -510,12 +511,6 @@ playlistwin_press(GtkWidget * widget,
return TRUE;
}

static gboolean playlistwin_delete(GtkWidget *widget, void *data)
{
aud_drct_quit ();
return TRUE;
}

void
playlistwin_hide_timer(void)
{
Expand Down Expand Up @@ -761,27 +756,18 @@ playlistwin_create_window(void)
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
GDK_SCROLL_MASK | GDK_VISIBILITY_NOTIFY_MASK);

g_signal_connect(playlistwin, "delete_event",
G_CALLBACK(playlistwin_delete), NULL);
g_signal_connect(playlistwin, "button_press_event",
G_CALLBACK(playlistwin_press), NULL);
g_signal_connect(playlistwin, "scroll_event",
G_CALLBACK(playlistwin_scrolled), NULL);

drag_dest_set(playlistwin);
g_signal_connect (playlistwin, "delete-event", (GCallback) handle_window_close, NULL);
g_signal_connect (playlistwin, "button-press-event", (GCallback) playlistwin_press, NULL);
g_signal_connect (playlistwin, "scroll-event", (GCallback) playlistwin_scrolled, NULL);
g_signal_connect (playlistwin, "key-press-event", (GCallback) mainwin_keypress, NULL);

drag_dest_set (playlistwin);
drop_position = -1;
g_signal_connect ((GObject *) playlistwin, "drag-motion", (GCallback)
drag_motion, 0);
g_signal_connect ((GObject *) playlistwin, "drag-leave", (GCallback)
drag_leave, 0);
g_signal_connect ((GObject *) playlistwin, "drag-drop", (GCallback)
drag_drop, 0);
g_signal_connect ((GObject *) playlistwin, "drag-data-received", (GCallback)
drag_data_received, 0);

g_signal_connect ((GObject *) playlistwin, "key-press-event", (GCallback)
mainwin_keypress, 0);

g_signal_connect (playlistwin, "drag-motion", (GCallback) drag_motion, NULL);
g_signal_connect (playlistwin, "drag-leave", (GCallback) drag_leave, NULL);
g_signal_connect (playlistwin, "drag-drop", (GCallback) drag_drop, NULL);
g_signal_connect (playlistwin, "drag-data-received", (GCallback) drag_data_received, NULL);
}

static void get_title (void)
Expand Down

0 comments on commit 64c6bd1

Please sign in to comment.