Added a helper to rotate the screen by 90 degrees
This commit is contained in:
parent
d700bb221e
commit
ba6bc608ea
|
@ -42,6 +42,7 @@ typedef struct _PanelAppletHelper
|
|||
void (*position_menu)(Panel * panel, GtkMenu * menu, gint * x, gint * y,
|
||||
gboolean * push_in);
|
||||
void (*preferences_dialog)(Panel * panel);
|
||||
void (*rotate_screen)(Panel * panel);
|
||||
void (*shutdown_dialog)(Panel * panel);
|
||||
int (*suspend)(Panel * panel);
|
||||
} PanelAppletHelper;
|
||||
|
|
|
@ -20,8 +20,8 @@ subdirs:
|
|||
@for i in $(SUBDIRS); do (cd $$i && $(MAKE)) || exit; done
|
||||
|
||||
panel_OBJS = panel.o window.o main.o
|
||||
panel_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) -D PREFIX=\"$(PREFIX)\" $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libSystem libDesktop`
|
||||
panel_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libSystem libDesktop`
|
||||
panel_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) -D PREFIX=\"$(PREFIX)\" $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libSystem libDesktop xrandr`
|
||||
panel_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libSystem libDesktop xrandr`
|
||||
|
||||
panel: $(panel_OBJS)
|
||||
$(CC) -o panel $(panel_OBJS) $(panel_LDFLAGS)
|
||||
|
|
|
@ -88,6 +88,7 @@ static void _on_clicked(gpointer data);
|
|||
static gboolean _on_idle(gpointer data);
|
||||
static void _on_lock(gpointer data);
|
||||
static void _on_logout(gpointer data);
|
||||
static void _on_rotate(gpointer data);
|
||||
static void _on_run(gpointer data);
|
||||
static void _on_shutdown(gpointer data);
|
||||
static void _on_suspend(gpointer data);
|
||||
|
@ -315,12 +316,19 @@ static void _on_clicked(gpointer data)
|
|||
g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(
|
||||
_on_about), main);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
/* lock screen */
|
||||
menuitem = gtk_separator_menu_item_new();
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
menuitem = _main_menuitem(_("Lock screen"), "gnome-lockscreen");
|
||||
g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(
|
||||
_on_lock), main);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
/* rotate screen */
|
||||
menuitem = _main_menuitem(_("Rotate"), NULL);
|
||||
g_signal_connect_swapped(G_OBJECT(menuitem), "activate",
|
||||
G_CALLBACK(_on_rotate), data);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
/* logout */
|
||||
if(main->helper->logout_dialog != NULL)
|
||||
{
|
||||
menuitem = _main_menuitem(_("Logout..."), "gnome-logout");
|
||||
|
@ -328,6 +336,7 @@ static void _on_clicked(gpointer data)
|
|||
G_CALLBACK(_on_logout), data);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
}
|
||||
/* suspend */
|
||||
if(main->helper->suspend != NULL)
|
||||
{
|
||||
menuitem = _main_menuitem(_("Suspend"), "gtk-media-pause");
|
||||
|
@ -335,6 +344,7 @@ static void _on_clicked(gpointer data)
|
|||
G_CALLBACK(_on_suspend), data);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||
}
|
||||
/* shutdown */
|
||||
menuitem = _main_menuitem(_("Shutdown..."), "gnome-shutdown");
|
||||
g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(
|
||||
_on_shutdown), data);
|
||||
|
@ -463,6 +473,15 @@ static void _on_logout(gpointer data)
|
|||
}
|
||||
|
||||
|
||||
/* on_rotate */
|
||||
static void _on_rotate(gpointer data)
|
||||
{
|
||||
Main * main = data;
|
||||
|
||||
main->helper->rotate_screen(main->helper->panel);
|
||||
}
|
||||
|
||||
|
||||
/* on_run */
|
||||
static void _on_run(gpointer data)
|
||||
{
|
||||
|
|
22
src/panel.c
22
src/panel.c
|
@ -37,6 +37,8 @@ static char const _license[] =
|
|||
#include <libintl.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <gdk/gdkx.h>
|
||||
#include <X11/X.h>
|
||||
#include <X11/extensions/Xrandr.h>
|
||||
#include "window.h"
|
||||
#include "panel.h"
|
||||
#include "../config.h"
|
||||
|
@ -144,6 +146,7 @@ static void _panel_helper_position_menu_bottom(Panel * panel, GtkMenu * menu,
|
|||
static void _panel_helper_position_menu_top(Panel * panel, GtkMenu * menu,
|
||||
gint * x, gint * y, gboolean * push_in);
|
||||
static void _panel_helper_preferences_dialog(Panel * panel);
|
||||
static void _panel_helper_rotate_screen(Panel * panel);
|
||||
static void _panel_helper_shutdown_dialog(Panel * panel);
|
||||
static int _panel_helper_suspend(Panel * panel);
|
||||
|
||||
|
@ -194,6 +197,7 @@ Panel * panel_new(PanelPrefs const * prefs)
|
|||
#endif
|
||||
panel->top_helper.position_menu = _panel_helper_position_menu_top;
|
||||
panel->top_helper.preferences_dialog = _panel_helper_preferences_dialog;
|
||||
panel->top_helper.rotate_screen = _panel_helper_rotate_screen;
|
||||
panel->top_helper.shutdown_dialog = _panel_helper_shutdown_dialog;
|
||||
panel->top_helper.suspend = (_panel_can_suspend())
|
||||
? _panel_helper_suspend : NULL;
|
||||
|
@ -1513,6 +1517,24 @@ static void _panel_helper_preferences_dialog(Panel * panel)
|
|||
}
|
||||
|
||||
|
||||
/* panel_helper_rotate_screen */
|
||||
static void _panel_helper_rotate_screen(Panel * panel)
|
||||
{
|
||||
GdkDisplay * display;
|
||||
XRRScreenConfiguration * sc;
|
||||
Rotation r;
|
||||
SizeID size;
|
||||
|
||||
display = gdk_screen_get_display(panel->screen);
|
||||
sc = XRRGetScreenInfo(GDK_DISPLAY_XDISPLAY(display),
|
||||
GDK_WINDOW_XWINDOW(panel->root));
|
||||
size = XRRConfigCurrentConfiguration(sc, &r);
|
||||
r = (r == RR_Rotate_0) ? RR_Rotate_90 : RR_Rotate_0;
|
||||
XRRSetScreenConfig(GDK_DISPLAY_XDISPLAY(display), sc,
|
||||
GDK_WINDOW_XWINDOW(panel->root), size, r, CurrentTime);
|
||||
}
|
||||
|
||||
|
||||
/* panel_helper_shutdown_dialog */
|
||||
static gboolean _shutdown_dialog_on_closex(gpointer data);
|
||||
static void _shutdown_dialog_on_response(GtkWidget * widget, gint response,
|
||||
|
|
|
@ -10,8 +10,8 @@ dist=Makefile,panel.h,window.h
|
|||
type=binary
|
||||
sources=panel.c,window.c,main.c
|
||||
cppflags=-D PREFIX=\"$(PREFIX)\"
|
||||
cflags=`pkg-config --cflags libSystem libDesktop`
|
||||
ldflags=`pkg-config --libs libSystem libDesktop`
|
||||
cflags=`pkg-config --cflags libSystem libDesktop xrandr`
|
||||
ldflags=`pkg-config --libs libSystem libDesktop xrandr`
|
||||
install=$(BINDIR)
|
||||
|
||||
[main.c]
|
||||
|
|
Loading…
Reference in New Issue
Block a user