active_window_x 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ext/active_window_x/extconf.rb +14 -1
- data/ext/active_window_x/xlib.c +6 -5
- data/lib/active_window_x.rb +1 -1
- data/lib/active_window_x/version.rb +1 -1
- data/spec/atom_spec.rb +2 -2
- data/spec/display_spec.rb +2 -2
- data/spec/root_window_spec.rb +1 -1
- data/spec/window_spec.rb +2 -2
- data/spec/xlib_spec.rb +9 -12
- metadata +7 -5
@@ -1,7 +1,20 @@
|
|
1
1
|
require "mkmf"
|
2
2
|
|
3
|
+
map = {
|
4
|
+
'1.8.' => 'RUBY_1_8',
|
5
|
+
'1.9.' => 'RUBY_1_9',
|
6
|
+
}
|
7
|
+
version, micro = map.find do |v, m|
|
8
|
+
RUBY_VERSION.start_with? v
|
9
|
+
end
|
10
|
+
|
11
|
+
if micro.nil?
|
12
|
+
then abort "Not supported ruby version: #{RUBY_VERSION}"
|
13
|
+
else $defs << "-D#{micro}"
|
14
|
+
end
|
15
|
+
|
3
16
|
if have_library('X11')
|
4
17
|
create_makefile "active_window_x/xlib"
|
5
18
|
else
|
6
|
-
|
19
|
+
abort "Cannot found X11"
|
7
20
|
end
|
data/ext/active_window_x/xlib.c
CHANGED
@@ -324,7 +324,6 @@ VALUE x_event_new(XEvent *xevent) {
|
|
324
324
|
VALUE xlib_x_next_event(VALUE self, VALUE display_obj) {
|
325
325
|
Display *display;
|
326
326
|
XEvent *event_return;
|
327
|
-
VALUE event_obj;
|
328
327
|
|
329
328
|
GetDisplay(display_obj, display);
|
330
329
|
event_return = ALLOC(XEvent);
|
@@ -345,13 +344,15 @@ VALUE xlib_x_set_wm_protocols(VALUE self, VALUE display_obj, VALUE w_obj,
|
|
345
344
|
Display *display;
|
346
345
|
Window w;
|
347
346
|
Atom *atom_ary;
|
348
|
-
int count, s,
|
347
|
+
int count, s, i;
|
349
348
|
|
350
349
|
GetDisplay(display_obj, display);
|
350
|
+
count = RARRAY_LEN(atom_ary_obj);
|
351
|
+
atom_ary = ALLOC_N(Atom, count);
|
352
|
+
for (i=0; i<count; i++)
|
353
|
+
atom_ary[i] = RARRAY_PTR(atom_ary_obj)[i];
|
354
|
+
|
351
355
|
w = (Window) NUM2ULONG(w_obj);
|
352
|
-
count = RARRAY(atom_ary_obj)->len;
|
353
|
-
atom_ary = ALLOC_N(Atom, len);
|
354
|
-
for (i=0; i<count; i++) atom_ary[i] = RARRAY(atom_ary_obj)->ptr[i];
|
355
356
|
|
356
357
|
s = XSetWMProtocols(display, w, atom_ary, count);
|
357
358
|
raise_if_xerror_occurred();
|
data/lib/active_window_x.rb
CHANGED
data/spec/atom_spec.rb
CHANGED
@@ -6,8 +6,8 @@ include ActiveWindowX
|
|
6
6
|
|
7
7
|
describe Atom do
|
8
8
|
before do
|
9
|
-
@raw_display =
|
10
|
-
@display =
|
9
|
+
@raw_display = double Xlib::Display
|
10
|
+
@display = double Display
|
11
11
|
@display.stub(:raw){@raw_display}
|
12
12
|
@display.stub(:kind_of?).with(Display).and_return(true)
|
13
13
|
@id = 123
|
data/spec/display_spec.rb
CHANGED
@@ -6,7 +6,7 @@ include ActiveWindowX
|
|
6
6
|
|
7
7
|
describe Display do
|
8
8
|
before do
|
9
|
-
@display_raw =
|
9
|
+
@display_raw = double Xlib::Display
|
10
10
|
Xlib.stub(:x_open_display).and_return(@display_raw)
|
11
11
|
@display = Display.new nil
|
12
12
|
@root_id = 9999
|
@@ -26,7 +26,7 @@ describe Display do
|
|
26
26
|
before do
|
27
27
|
@root = @display.root_window
|
28
28
|
@root.select_input Xlib::PropertyChangeMask
|
29
|
-
@event =
|
29
|
+
@event = double Xlib::XPropertyEvent
|
30
30
|
@event.stub(:type){@type}
|
31
31
|
@event.stub(:serial){1000}
|
32
32
|
@event.stub(:send_event){0}
|
data/spec/root_window_spec.rb
CHANGED
@@ -6,7 +6,7 @@ include ActiveWindowX
|
|
6
6
|
|
7
7
|
describe RootWindow do
|
8
8
|
before do
|
9
|
-
@display_raw =
|
9
|
+
@display_raw = double Xlib::Display
|
10
10
|
@display_raw.stub(:kind_of?).with(Data).and_return(true)
|
11
11
|
Xlib.stub(:x_open_display).and_return(@display_raw)
|
12
12
|
@display = Display.new
|
data/spec/window_spec.rb
CHANGED
@@ -6,8 +6,8 @@ include ActiveWindowX
|
|
6
6
|
|
7
7
|
describe Window do
|
8
8
|
before do
|
9
|
-
@raw_display =
|
10
|
-
@display =
|
9
|
+
@raw_display = double Xlib::Display
|
10
|
+
@display = double Display
|
11
11
|
@display.stub(:raw){@raw_display}
|
12
12
|
@display.stub(:kind_of?).with(Display).and_return(true)
|
13
13
|
@id = 123456
|
data/spec/xlib_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# -*- coding:utf-8; mode:ruby; -*-
|
2
2
|
|
3
3
|
require 'active_window_x'
|
4
|
-
require 'dl'
|
5
4
|
|
6
5
|
include ActiveWindowX
|
7
6
|
|
@@ -149,14 +148,13 @@ describe Xlib do
|
|
149
148
|
it 'should return a Array such as [Xlib::None, ]' do
|
150
149
|
r = Xlib::x_get_window_property(@display, @window, @atom, 0, @length, false, 10)
|
151
150
|
p r
|
152
|
-
r.
|
153
|
-
r.
|
154
|
-
r.
|
155
|
-
r.
|
156
|
-
r.length.should == 1
|
151
|
+
r[0].should == @window_atom
|
152
|
+
r[1].should == 32
|
153
|
+
r[2].should == 0
|
154
|
+
r.length.should == 5
|
157
155
|
end
|
158
156
|
end
|
159
|
-
context 'with an
|
157
|
+
context 'with an valid type and a propery named as "_NET_ACTIVE_WINDOW"' do
|
160
158
|
before do
|
161
159
|
@name = "_NET_ACTIVE_WINDOW"
|
162
160
|
@atom = Xlib::x_intern_atom @display, @name, false
|
@@ -165,11 +163,10 @@ describe Xlib do
|
|
165
163
|
it 'should return a Array such as [Xlib::None, ]' do
|
166
164
|
r = Xlib::x_get_window_property(@display, @window, @atom, 0, @length, false, @window_atom)
|
167
165
|
p r
|
168
|
-
r.
|
169
|
-
r.
|
170
|
-
|
171
|
-
r.
|
172
|
-
r.shift.length == DL::sizeof('l') * l
|
166
|
+
r[0].should == @window_atom
|
167
|
+
r[1].should == 32
|
168
|
+
r[2].should == 1
|
169
|
+
r.length.should == 5
|
173
170
|
end
|
174
171
|
end
|
175
172
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_window_x
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 1
|
9
8
|
- 2
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Keiichiro Ui
|
@@ -15,7 +15,8 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2014-02-11 00:00:00 +09:00
|
19
|
+
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: rake
|
@@ -95,6 +96,7 @@ files:
|
|
95
96
|
- spec/root_window_spec.rb
|
96
97
|
- spec/window_spec.rb
|
97
98
|
- spec/xlib_spec.rb
|
99
|
+
has_rdoc: true
|
98
100
|
homepage: https://github.com/kui/active_window_x
|
99
101
|
licenses: []
|
100
102
|
|
@@ -124,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
126
|
requirements: []
|
125
127
|
|
126
128
|
rubyforge_project:
|
127
|
-
rubygems_version: 1.
|
129
|
+
rubygems_version: 1.6.2
|
128
130
|
signing_key:
|
129
131
|
specification_version: 3
|
130
132
|
summary: observer an active window on Linux (X Window System).
|