Browse Source

Cleaning up a bit.

* Use DefaultScreen when monitor is not set in the config file
 * The manager selection should no longer be per screen but for entire display
 * Also handle SIGABRT


(Old svn revision: 19119)
upstream/xfce4-panel-4.10.1
Jasper Huijsmans 18 years ago
parent
commit
e6d47dfab1
  1. 4
      panel/main.c
  2. 1
      panel/panel-app-messages.c
  3. 32
      panel/panel-app.c
  4. 9
      panel/panel-config.c
  5. 21
      panel/panel-dialogs.c
  6. 5
      panel/panel-dialogs.h
  7. 1
      panel/panel-item-manager.c
  8. 67
      panel/panel.c

4
panel/main.c

@ -56,10 +56,10 @@ version_and_usage (void)
" -h, --help Show this message and exit\n"
" -v, --version Show this message and exit\n"
" -c, --customize Show configuration dialog\n"
" -s, --save Save panel configurations\n"
" -s, --save Save configuration\n"
" -r, --restart Restart panels\n"
" -q, --quit End the session\n"
" -x, --exit Exit panels\n"
" -x, --exit Close all panels and end the program\n"
" -a, --add Add new items\n\n"
));
}

1
panel/panel-app-messages.c

@ -108,7 +108,6 @@ panel_app_send (PanelAppMessage message)
invisible = gtk_invisible_new ();
gtk_widget_realize (invisible);
gtk_widget_show (invisible);
gev.type = GDK_CLIENT_EVENT;
gev.window = invisible->window;

32
panel/panel-app.c

@ -44,6 +44,7 @@
#define _(x) x
#endif
#define SELECTION_NAME "XFCE4_PANEL"
#define PANEL_LAUNCHER "launcher"
/* types and global variables */
@ -162,7 +163,8 @@ sighandler (int sig)
break;
case SIGINT:
DBG ("INT signal caught");
case SIGABRT:
DBG ("INT or ABRT signal caught");
panel_app.runstate = PANEL_RUN_STATE_QUIT_NOSAVE;
break;
@ -178,13 +180,13 @@ check_signal_state (void)
static int recursive = 0;
gboolean quit = FALSE;
if (recursive)
return TRUE;
/* micro-optimization */
if (G_LIKELY (panel_app.runstate == PANEL_RUN_STATE_NORMAL))
return TRUE;
if (G_UNLIKELY (recursive))
return TRUE;
recursive++;
switch (panel_app.runstate)
@ -369,8 +371,6 @@ int
panel_app_init (void)
{
Atom selection_atom, manager_atom;
char *selection_name;
int screen_nr;
GtkWidget *invisible;
XClientMessageEvent xev;
@ -379,11 +379,7 @@ panel_app_init (void)
panel_app.initialized = TRUE;
screen_nr = DefaultScreen (GDK_DISPLAY());
selection_name = g_strdup_printf ("PANEL_%d", screen_nr);
selection_atom = XInternAtom (GDK_DISPLAY (), selection_name, False);
selection_atom = XInternAtom (GDK_DISPLAY (), SELECTION_NAME, False);
panel_app.ipc_window = XGetSelectionOwner (GDK_DISPLAY (), selection_atom);
@ -405,7 +401,7 @@ panel_app_init (void)
panel_app.ipc_window)
{
g_critical ("Could not set ownership of selection \"%s\"",
selection_name);
SELECTION_NAME);
return -1;
}
@ -430,6 +426,7 @@ panel_app_init (void)
return 0;
}
/* fix position after showing panel for the first time */
static gboolean
expose_timeout (GtkWidget *panel)
{
@ -457,10 +454,7 @@ panel_app_run (int argc, char **argv)
{
#ifdef HAVE_SIGACTION
struct sigaction act;
#endif
/* set up signals */
#ifdef HAVE_SIGACTION
act.sa_handler = sighandler;
sigemptyset (&act.sa_mask);
#ifdef SA_RESTART
@ -472,6 +466,7 @@ panel_app_run (int argc, char **argv)
sigaction (SIGUSR1, &act, NULL);
sigaction (SIGUSR2, &act, NULL);
sigaction (SIGINT, &act, NULL);
sigaction (SIGABRT, &act, NULL);
sigaction (SIGTERM, &act, NULL);
act.sa_handler = sigchld_handler;
sigaction (SIGCHLD, &act, NULL);
@ -480,6 +475,7 @@ panel_app_run (int argc, char **argv)
signal (SIGUSR1, sighandler);
signal (SIGUSR2, sighandler);
signal (SIGINT, sighandler);
signal (SIGABRT, sighandler);
signal (SIGTERM, sighandler);
signal (SIGCHLD, sigchld_handler);
#endif
@ -563,13 +559,13 @@ panel_app_queue_save (void)
void
panel_app_customize (void)
{
panel_dialog (panel_app.panel_list, FALSE);
panel_manager_dialog (panel_app.panel_list);
}
void
panel_app_customize_items (void)
{
panel_dialog (panel_app.panel_list, TRUE);
add_items_dialog (panel_app.panel_list);
}
void

9
panel/panel-config.c

@ -31,6 +31,7 @@
#include <stdlib.h>
#include <sys/stat.h>
#include <libxfce4util/libxfce4util.h>
#include <gdk/gdkx.h>
#include <gtk/gtkenums.h>
#include "panel-config.h"
@ -202,6 +203,7 @@ struct _ConfigParser
ParserState state;
gboolean properties_set;
gboolean monitor_set;
/* properties */
int size;
@ -219,6 +221,7 @@ static void
init_properties (ConfigParser *parser)
{
parser->properties_set = FALSE;
parser->monitor_set = FALSE;
parser->size = DEFAULT_SIZE;
parser->monitor = 0;
@ -246,6 +249,7 @@ config_set_property (ConfigParser *parser,
else if (strcmp (name, "monitor") == 0)
{
parser->monitor = (int) strtol (value, NULL, 0);
parser->monitor_set = TRUE;
}
else if (strcmp (name, "screen-position") == 0)
{
@ -419,6 +423,11 @@ end_element_handler (GMarkupParseContext * context,
parser->screen_position =
XFCE_SCREEN_POSITION_FLOATING_H;
if (!parser->monitor_set)
{
parser->monitor = DefaultScreen (GDK_DISPLAY());
}
g_object_set (G_OBJECT (parser->current_panel),
"size", parser->size,
"monitor", parser->monitor,

21
panel/panel-dialogs.c

@ -528,7 +528,7 @@ items_dialog_panel_destroyed (PanelItemsDialog *pid)
gtk_dialog_response (GTK_DIALOG (pid->dlg), GTK_RESPONSE_CANCEL);
}
static void
void
add_items_dialog (GPtrArray *panels)
{
PanelItemsDialog *pid;
@ -1482,8 +1482,8 @@ panel_dialog_response (GtkWidget *dlg, int response, PanelManagerDialog *pmd)
}
}
static void
manage_panels_dialog (GPtrArray *panels)
void
panel_manager_dialog (GPtrArray *panels)
{
PanelManagerDialog *pmd;
GtkWidget *header, *vbox, *img, *sel, *frame, *hbox;
@ -1587,18 +1587,3 @@ manage_panels_dialog (GPtrArray *panels)
panel_app_register_dialog (pmd->dlg);
}
/*
* Public API
* ==========
*/
void
panel_dialog (GPtrArray *panels, gboolean show_items)
{
if (show_items)
add_items_dialog (panels);
else
manage_panels_dialog (panels);
}

5
panel/panel-dialogs.h

@ -22,9 +22,10 @@
#ifndef _PANEL_DIALOGS_H
#define _PANEL_DIALOGS_H
#include "panel.h"
void add_items_dialog (GPtrArray *panels);
void panel_manager_dialog (GPtrArray *panels);
void panel_dialog (GPtrArray *panels, gboolean show_items);
#endif /* _PANEL_DIALOGS_H */

1
panel/panel-item-manager.c

@ -100,6 +100,7 @@ _add_item_info_to_array (char *plugin_name, XfcePanelItemClass *class,
info->display_name = class->name;
info->comment = class->comment;
/* for the item list in the 'Add Items' dialog */
if (class->icon)
info->icon = xfce_themed_icon_load (class->icon, 48);

67
panel/panel.c

@ -61,6 +61,7 @@ enum
};
/* GObject */
static void panel_finalize (GObject * object);
static void panel_get_property (GObject * object,
@ -73,13 +74,19 @@ static void panel_set_property (GObject * object,
const GValue * value,
GParamSpec * pspec);
/* GtkWidget */
static void panel_size_request (GtkWidget * widget,
GtkRequisition * requisition);
static gboolean panel_button_pressed (GtkWidget *widget,
GdkEventButton *ev);
/* plugin menu */
static void panel_menu_deactivated (Panel *panel);
static void panel_menu_opened (Panel *panel);
/* add items */
static void panel_insert_item (Panel *panel,
const char *name,
int position);
@ -129,9 +136,6 @@ static gboolean _panel_itembar_button_pressed (GtkWidget *widget,
/* menu */
static GtkWidget *_panel_create_menu (Panel *panel);
static gboolean _panel_button_pressed (GtkWidget *widget,
GdkEventButton *ev);
/* this sets up a lot of stuff, see GObject API reference */
G_DEFINE_TYPE (Panel, panel, XFCE_TYPE_PANEL_WINDOW);
@ -152,7 +156,7 @@ panel_class_init (PanelClass * klass)
object_class->get_property = panel_get_property;
object_class->set_property = panel_set_property;
widget_class->button_press_event = _panel_button_pressed;
widget_class->button_press_event = panel_button_pressed;
widget_class->size_request = panel_size_request;
/* properties */
@ -365,6 +369,33 @@ panel_size_request (GtkWidget * widget, GtkRequisition * requisition)
requisition->height = MAX (12, requisition->height);
}
static gboolean
panel_button_pressed (GtkWidget *widget, GdkEventButton *ev)
{
guint modifiers;
modifiers = gtk_accelerator_get_default_mod_mask ();
if (ev->button == 3 || (ev->button == 1 &&
(ev->state & modifiers) == GDK_CONTROL_MASK))
{
PanelPrivate *priv;
priv = PANEL_GET_PRIVATE (widget);
gtk_menu_set_screen (GTK_MENU (priv->menu),
gtk_widget_get_screen (widget));
gtk_menu_popup (GTK_MENU (priv->menu), NULL, NULL, NULL, NULL,
ev->button, ev->time);
return TRUE;
}
return GTK_WIDGET_CLASS (panel_parent_class)->button_press_event (widget,
ev);
}
/* DND dest */
static void
_panel_drag_data_received (GtkWidget *widget, GdkDragContext *context,
@ -654,34 +685,6 @@ _panel_create_menu (Panel *panel)
return menu;
}
static gboolean
_panel_button_pressed (GtkWidget *widget, GdkEventButton *ev)
{
guint modifiers;
modifiers = gtk_accelerator_get_default_mod_mask ();
if (ev->button == 3 || (ev->button == 1 &&
(ev->state & modifiers) == GDK_CONTROL_MASK))
{
PanelPrivate *priv;
priv = PANEL_GET_PRIVATE (widget);
gtk_menu_set_screen (GTK_MENU (priv->menu),
gtk_widget_get_screen (widget));
gtk_menu_popup (GTK_MENU (priv->menu), NULL, NULL, NULL, NULL,
ev->button, ev->time);
return TRUE;
}
return GTK_WIDGET_CLASS (panel_parent_class)->button_press_event (widget,
ev);
}
/* public API */
Panel *

Loading…
Cancel
Save