summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2016-02-09 21:25:29 +0100
committerDave Davenport <qball@gmpclient.org>2016-02-09 21:25:29 +0100
commit289795b22a2ab0bf3f24e514c50f43df860f2690 (patch)
treeb7cf5179b1e999b2d0e9395cbddf199a99062d1e
parent9b12f69fec93756e5e5b5c470d1250d5ffe9eb92 (diff)
Fix finding active desktop!
-rw-r--r--include/textbox.h18
-rw-r--r--include/x11-helper.h1
-rw-r--r--source/dialogs/dmenu.c4
-rw-r--r--source/rofi.c3
-rw-r--r--source/textbox.c2
-rw-r--r--source/x11-helper.c14
6 files changed, 29 insertions, 13 deletions
diff --git a/include/textbox.h b/include/textbox.h
index ecc52784..fe59b02a 100644
--- a/include/textbox.h
+++ b/include/textbox.h
@@ -40,15 +40,15 @@ typedef struct
typedef enum
{
- TB_AUTOHEIGHT = 1 << 0,
- TB_AUTOWIDTH = 1 << 1,
- TB_LEFT = 1 << 16,
- TB_RIGHT = 1 << 17,
- TB_CENTER = 1 << 18,
- TB_EDITABLE = 1 << 19,
- TB_MARKUP = 1 << 20,
- TB_WRAP = 1 << 21,
- TB_PASSWORD = 1 << 22,
+ TB_AUTOHEIGHT = 1 << 0,
+ TB_AUTOWIDTH = 1 << 1,
+ TB_LEFT = 1 << 16,
+ TB_RIGHT = 1 << 17,
+ TB_CENTER = 1 << 18,
+ TB_EDITABLE = 1 << 19,
+ TB_MARKUP = 1 << 20,
+ TB_WRAP = 1 << 21,
+ TB_PASSWORD = 1 << 22,
} TextboxFlags;
typedef enum
diff --git a/include/x11-helper.h b/include/x11-helper.h
index b075feeb..a3647b71 100644
--- a/include/x11-helper.h
+++ b/include/x11-helper.h
@@ -55,6 +55,7 @@ int window_get_cardinal_prop ( Display *display, Window w, Atom atom, unsigned l
X ( _NET_WM_WINDOW_TYPE_NORMAL ), \
X ( _NET_WM_STATE_FULLSCREEN ), \
X ( _NET_WM_DESKTOP ), \
+ X ( _NET_DESKTOP_VIEWPORT ), \
X ( CLIPBOARD ), \
X ( UTF8_STRING ), \
X ( _NET_WM_WINDOW_OPACITY )
diff --git a/source/dialogs/dmenu.c b/source/dialogs/dmenu.c
index f336a1fd..a6153b6c 100644
--- a/source/dialogs/dmenu.c
+++ b/source/dialogs/dmenu.c
@@ -89,8 +89,8 @@ static char **get_dmenu ( FILE *fd, unsigned int *length )
data[l - 1] = '\0';
l--;
}
- if ( ! g_utf8_validate ( data, l, NULL) ) {
- fprintf(stderr, "String: '%s' is not valid utf-8\n", data);
+ if ( !g_utf8_validate ( data, l, NULL ) ) {
+ fprintf ( stderr, "String: '%s' is not valid utf-8\n", data );
continue;
}
diff --git a/source/rofi.c b/source/rofi.c
index 0a1f0d13..8db09233 100644
--- a/source/rofi.c
+++ b/source/rofi.c
@@ -1568,7 +1568,8 @@ MenuState *menu ( Mode *sw,
state->top_offset = state->border * 1 + state->line_height + 2 + config.line_margin * 2;
// Move indicator to end.
- widget_move ( WIDGET ( state->case_indicator ), state->border + textbox_get_width ( state->prompt_tb ) + entrybox_width, state->border );
+ widget_move ( WIDGET ( state->case_indicator ), state->border + textbox_get_width ( state->prompt_tb ) + entrybox_width,
+ state->border );
textbox_text ( state->case_indicator, get_matching_state () );
state->message_tb = NULL;
diff --git a/source/textbox.c b/source/textbox.c
index d291327b..6a2ee40e 100644
--- a/source/textbox.c
+++ b/source/textbox.c
@@ -140,7 +140,7 @@ static void __textbox_update_pango_text ( textbox *tb )
pango_layout_set_attributes ( tb->layout, NULL );
pango_layout_set_text ( tb->layout, string, l );
}
- else if ( tb->flags & TB_MARKUP || tb->tbft & MARKUP ) {
+ else if ( tb->flags & TB_MARKUP || tb->tbft & MARKUP ) {
pango_layout_set_markup ( tb->layout, tb->text, -1 );
}
else {
diff --git a/source/x11-helper.c b/source/x11-helper.c
index 9c408748..b21e6ff3 100644
--- a/source/x11-helper.c
+++ b/source/x11-helper.c
@@ -265,6 +265,20 @@ void monitor_active ( Display *display, workarea *mon )
}
fprintf ( stderr, "Failed to find selected monitor.\n" );
}
+ // Get the current desktop.
+ unsigned long current_desktop = 0;
+ if ( window_get_cardinal_prop ( display, root, netatoms[_NET_CURRENT_DESKTOP], &current_desktop, 1 ) ) {
+ unsigned long desktops = 0;
+ if ( window_get_cardinal_prop ( display, root, netatoms[_NET_NUMBER_OF_DESKTOPS], &desktops, 1 ) ) {
+ unsigned long deskg[desktops * 2];
+ if ( window_get_cardinal_prop ( display, root, netatoms[_NET_DESKTOP_VIEWPORT], &deskg[0], desktops * 2 ) ) {
+ if ( current_desktop < desktops ) {
+ monitor_dimensions ( display, screen, deskg[current_desktop * 2], deskg[current_desktop * 2 + 1], mon );
+ return;
+ }
+ }
+ }
+ }
if ( window_get_prop ( display, root, netatoms[_NET_ACTIVE_WINDOW], &type, &count, &id, sizeof ( Window ) )
&& type == XA_WINDOW && count > 0 ) {
XWindowAttributes attr;