summaryrefslogtreecommitdiff
path: root/shell/maynard.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/maynard.c')
-rw-r--r--shell/maynard.c321
1 files changed, 4 insertions, 317 deletions
diff --git a/shell/maynard.c b/shell/maynard.c
index 85da0fc..1939e34 100644
--- a/shell/maynard.c
+++ b/shell/maynard.c
@@ -34,15 +34,12 @@
#include "maynard-resources.h"
#include "app-icon.h"
-#include "clock.h"
#include "favorites.h"
-#include "launcher.h"
#include "panel.h"
-#include "vertical-clock.h"
extern char **environ; /* defined by libc */
-#define DEFAULT_BACKGROUND "/usr/share/wallpapers/Hanami/contents/images/3872x2592.jpg"
+#define DEFAULT_BACKGROUND "/usr/share/wallpapers/Golden_Ripples/contents/images/1920x1200.jpg"
struct element {
GtkWidget *window;
@@ -61,46 +58,8 @@ struct desktop {
struct element *background;
struct element *panel;
- struct element *launcher_grid;
- struct element *clock;
-
- guint initial_panel_timeout_id;
- guint hide_panel_idle_id;
-
- gboolean grid_visible;
- gboolean system_visible;
- gboolean volume_visible;
};
-static gboolean panel_window_enter_cb (GtkWidget *widget,
- GdkEventCrossing *event, struct desktop *desktop);
-static gboolean panel_window_leave_cb (GtkWidget *widget,
- GdkEventCrossing *event, struct desktop *desktop);
-
-static gboolean
-connect_enter_leave_signals (gpointer data)
-{
- struct desktop *desktop = data;
- GList *l;
-
- g_signal_connect (desktop->panel->window, "enter-notify-event",
- G_CALLBACK (panel_window_enter_cb), desktop);
- g_signal_connect (desktop->panel->window, "leave-notify-event",
- G_CALLBACK (panel_window_leave_cb), desktop);
-
- g_signal_connect (desktop->clock->window, "enter-notify-event",
- G_CALLBACK (panel_window_enter_cb), desktop);
- g_signal_connect (desktop->clock->window, "leave-notify-event",
- G_CALLBACK (panel_window_leave_cb), desktop);
-
- g_signal_connect (desktop->launcher_grid->window, "enter-notify-event",
- G_CALLBACK (panel_window_enter_cb), desktop);
- g_signal_connect (desktop->launcher_grid->window, "leave-notify-event",
- G_CALLBACK (panel_window_leave_cb), desktop);
-
- return G_SOURCE_REMOVE;
-}
-
static void
desktop_shell_configure (void *data,
struct desktop_shell *desktop_shell,
@@ -109,42 +68,14 @@ desktop_shell_configure (void *data,
int32_t width, int32_t height)
{
struct desktop *desktop = data;
- int window_height;
- int grid_width, grid_height;
gtk_widget_set_size_request (desktop->background->window,
width, height);
- /* TODO: make this height a little nicer */
- window_height = height * MAYNARD_PANEL_HEIGHT_RATIO;
gtk_window_resize (GTK_WINDOW (desktop->panel->window),
- MAYNARD_PANEL_WIDTH, window_height);
-
- maynard_launcher_calculate (MAYNARD_LAUNCHER (desktop->launcher_grid->window),
- &grid_width, &grid_height, NULL);
- gtk_widget_set_size_request (desktop->launcher_grid->window,
- grid_width, grid_height);
-
- shell_helper_move_surface (desktop->helper, desktop->panel->surface,
- 0, (height - window_height) / 2);
-
- gtk_window_resize (GTK_WINDOW (desktop->clock->window),
- MAYNARD_CLOCK_WIDTH, MAYNARD_CLOCK_HEIGHT);
-
- shell_helper_move_surface (desktop->helper, desktop->clock->surface,
- MAYNARD_PANEL_WIDTH, (height - window_height) / 2);
-
- shell_helper_move_surface (desktop->helper,
- desktop->launcher_grid->surface,
- - grid_width,
- ((height - window_height) / 2) + MAYNARD_CLOCK_HEIGHT);
+ width, MAYNARD_PANEL_HEIGHT);
desktop_shell_desktop_ready (desktop->shell);
-
- /* TODO: why does the panel signal leave on drawing for
- * startup? we don't want to have to have this silly
- * timeout. */
- g_timeout_add_seconds (1, connect_enter_leave_signals, desktop);
}
static void
@@ -168,238 +99,9 @@ static const struct desktop_shell_listener listener = {
};
static void
-launcher_grid_toggle (GtkWidget *widget,
- struct desktop *desktop)
-{
- if (desktop->grid_visible)
- {
- shell_helper_slide_surface_back (desktop->helper,
- desktop->launcher_grid->surface);
- }
- else
- {
- int width;
-
- gtk_widget_get_size_request (desktop->launcher_grid->window,
- &width, NULL);
-
- shell_helper_slide_surface (desktop->helper,
- desktop->launcher_grid->surface,
- width + MAYNARD_PANEL_WIDTH, 0);
- }
-
- desktop->grid_visible = !desktop->grid_visible;
-}
-
-static void
-launcher_grid_create (struct desktop *desktop)
-{
- struct element *launcher_grid;
- GdkWindow *gdk_window;
-
- launcher_grid = malloc (sizeof *launcher_grid);
- memset (launcher_grid, 0, sizeof *launcher_grid);
-
- launcher_grid->window = maynard_launcher_new (desktop->background->window);
- gdk_window = gtk_widget_get_window (launcher_grid->window);
- launcher_grid->surface = gdk_wayland_window_get_wl_surface (gdk_window);
-
- gdk_wayland_window_set_use_custom_surface (gdk_window);
- shell_helper_add_surface_to_layer (desktop->helper,
- launcher_grid->surface,
- desktop->panel->surface);
-
- g_signal_connect (launcher_grid->window, "app-launched",
- G_CALLBACK (launcher_grid_toggle), desktop);
-
- gtk_widget_show_all (launcher_grid->window);
-
- desktop->launcher_grid = launcher_grid;
-}
-
-static void
-volume_changed_cb (MaynardClock *clock,
- gdouble value,
- const gchar *icon_name,
- struct desktop *desktop)
-{
- maynard_panel_set_volume_icon_name (
- MAYNARD_PANEL (desktop->panel->window), icon_name);
-}
-
-static GtkWidget *
-clock_create (struct desktop *desktop)
-{
- struct element *clock;
- GdkWindow *gdk_window;
-
- clock = malloc (sizeof *clock);
- memset (clock, 0, sizeof *clock);
-
- clock->window = maynard_clock_new ();
-
- g_signal_connect (clock->window, "volume-changed",
- G_CALLBACK (volume_changed_cb), desktop);
-
- gdk_window = gtk_widget_get_window (clock->window);
- clock->surface = gdk_wayland_window_get_wl_surface (gdk_window);
-
- gdk_wayland_window_set_use_custom_surface (gdk_window);
- shell_helper_add_surface_to_layer (desktop->helper, clock->surface,
- desktop->panel->surface);
-
- gtk_widget_show_all (clock->window);
-
- desktop->clock = clock;
-}
-
-static void
-button_toggled_cb (struct desktop *desktop,
- gboolean *visible,
- gboolean *not_visible)
-{
- *visible = !*visible;
- *not_visible = FALSE;
-
- if (desktop->system_visible)
- {
- maynard_clock_show_section (MAYNARD_CLOCK (desktop->clock->window),
- MAYNARD_CLOCK_SECTION_SYSTEM);
- maynard_panel_show_previous (MAYNARD_PANEL (desktop->panel->window),
- MAYNARD_PANEL_BUTTON_SYSTEM);
- }
- else if (desktop->volume_visible)
- {
- maynard_clock_show_section (MAYNARD_CLOCK (desktop->clock->window),
- MAYNARD_CLOCK_SECTION_VOLUME);
- maynard_panel_show_previous (MAYNARD_PANEL (desktop->panel->window),
- MAYNARD_PANEL_BUTTON_VOLUME);
- }
- else
- {
- maynard_clock_show_section (MAYNARD_CLOCK (desktop->clock->window),
- MAYNARD_CLOCK_SECTION_CLOCK);
- maynard_panel_show_previous (MAYNARD_PANEL (desktop->panel->window),
- MAYNARD_PANEL_BUTTON_NONE);
- }
-}
-
-static void
-system_toggled_cb (GtkWidget *widget,
- struct desktop *desktop)
-{
- button_toggled_cb (desktop,
- &desktop->system_visible,
- &desktop->volume_visible);
-}
-
-static void
-volume_toggled_cb (GtkWidget *widget,
- struct desktop *desktop)
-{
- button_toggled_cb (desktop,
- &desktop->volume_visible,
- &desktop->system_visible);
-}
-
-static gboolean
-panel_window_enter_cb (GtkWidget *widget,
- GdkEventCrossing *event,
- struct desktop *desktop)
-{
- if (desktop->initial_panel_timeout_id > 0)
- {
- g_source_remove (desktop->initial_panel_timeout_id);
- desktop->initial_panel_timeout_id = 0;
- }
-
- if (desktop->hide_panel_idle_id > 0)
- {
- g_source_remove (desktop->hide_panel_idle_id);
- desktop->hide_panel_idle_id = 0;
- return;
- }
-
- shell_helper_slide_surface_back (desktop->helper,
- desktop->panel->surface);
- shell_helper_slide_surface_back (desktop->helper,
- desktop->clock->surface);
-
- maynard_panel_set_expand (MAYNARD_PANEL (desktop->panel->window), TRUE);
-
- return FALSE;
-}
-
-static gboolean
-leave_panel_idle_cb (gpointer data)
-{
- struct desktop *desktop = data;
- gint width;
-
- desktop->hide_panel_idle_id = 0;
-
- gtk_window_get_size (GTK_WINDOW (desktop->clock->window),
- &width, NULL);
-
- shell_helper_slide_surface (desktop->helper,
- desktop->panel->surface,
- MAYNARD_VERTICAL_CLOCK_WIDTH - MAYNARD_PANEL_WIDTH, 0);
- shell_helper_slide_surface (desktop->helper,
- desktop->clock->surface,
- MAYNARD_VERTICAL_CLOCK_WIDTH - MAYNARD_PANEL_WIDTH - width, 0);
-
- maynard_panel_set_expand (MAYNARD_PANEL (desktop->panel->window), FALSE);
-
- maynard_clock_show_section (MAYNARD_CLOCK (desktop->clock->window),
- MAYNARD_CLOCK_SECTION_CLOCK);
- maynard_panel_show_previous (MAYNARD_PANEL (desktop->panel->window),
- MAYNARD_PANEL_BUTTON_NONE);
- desktop->system_visible = FALSE;
- desktop->volume_visible = FALSE;
-
- return G_SOURCE_REMOVE;
-}
-
-static gboolean
-panel_window_leave_cb (GtkWidget *widget,
- GdkEventCrossing *event,
- struct desktop *desktop)
-{
- if (desktop->initial_panel_timeout_id > 0)
- {
- g_source_remove (desktop->initial_panel_timeout_id);
- desktop->initial_panel_timeout_id = 0;
- }
-
- if (desktop->hide_panel_idle_id > 0)
- return;
-
- if (desktop->grid_visible)
- return;
-
- desktop->hide_panel_idle_id = g_idle_add (leave_panel_idle_cb, desktop);
-
- return FALSE;
-}
-
-static gboolean
-panel_hide_timeout_cb (gpointer data)
-{
- struct desktop *desktop = data;
-
- panel_window_leave_cb (NULL, NULL, desktop);
-
- return G_SOURCE_REMOVE;
-}
-
-static void
favorite_launched_cb (MaynardPanel *panel,
struct desktop *desktop)
{
- if (desktop->grid_visible)
- launcher_grid_toggle (desktop->launcher_grid->window, desktop);
-
- panel_window_leave_cb (NULL, NULL, desktop);
}
static void
@@ -413,18 +115,9 @@ panel_create (struct desktop *desktop)
panel->window = maynard_panel_new ();
- g_signal_connect (panel->window, "app-menu-toggled",
- G_CALLBACK (launcher_grid_toggle), desktop);
- g_signal_connect (panel->window, "system-toggled",
- G_CALLBACK (system_toggled_cb), desktop);
- g_signal_connect (panel->window, "volume-toggled",
- G_CALLBACK (volume_toggled_cb), desktop);
g_signal_connect (panel->window, "favorite-launched",
G_CALLBACK (favorite_launched_cb), desktop);
- desktop->initial_panel_timeout_id =
- g_timeout_add_seconds (2, panel_hide_timeout_cb, desktop);
-
/* set it up as the panel */
gdk_window = gtk_widget_get_window (panel->window);
gdk_wayland_window_set_use_custom_surface (gdk_window);
@@ -433,7 +126,7 @@ panel_create (struct desktop *desktop)
desktop_shell_set_user_data (desktop->shell, desktop);
desktop_shell_set_panel (desktop->shell, desktop->output, panel->surface);
desktop_shell_set_panel_position (desktop->shell,
- DESKTOP_SHELL_PANEL_POSITION_LEFT);
+ DESKTOP_SHELL_PANEL_POSITION_TOP);
shell_helper_set_panel (desktop->helper, panel->surface);
gtk_widget_show_all (panel->window);
@@ -646,18 +339,12 @@ main (int argc,
return -1;
}
- desktop->grid_visible = FALSE;
- desktop->system_visible = FALSE;
- desktop->volume_visible = FALSE;
-
css_setup (desktop);
background_create (desktop);
- /* panel needs to be first so the clock and launcher grid can
+ /* panel needs to be first so everything else can
* be added to its layer */
panel_create (desktop);
- clock_create (desktop);
- launcher_grid_create (desktop);
gtk_main ();