glimmer-dsl-swt 4.20.13.0 → 4.20.13.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f381c0b3d2f94fb562307642fe38f69d806f1bd48432e49f1039dc19f23084e
4
- data.tar.gz: 9e9965fcbc725ef7da7a4fb1b79d6026dc5ed4865fa4e81d19805ce93fd63db8
3
+ metadata.gz: 52a35ca793ca95839f0f328a465b2d9dafc008d5434520b92e2411ce19bde4ad
4
+ data.tar.gz: 7ec9d1550c1aedcb265761bb3f8c6b295a7d1d28af1944b81dcd4c8a4eb9e0f3
5
5
  SHA512:
6
- metadata.gz: 4fb4fb09032cf57af92d9afd700ee81c6bf7ebb5969abbf5e1927bfccb3604269f49a6e79a9761cddd005ea506146e50aa76dbcd34cb64aba16136b18b4b191c
7
- data.tar.gz: b5c319a6c4d14d014297ffaa2f1a6d3195a662cd7d4604bd4685cbd026feee873c80ec400c1b47f680867f3176fef854048359bbbbba1db21f5dc89a25c3f9e7
6
+ metadata.gz: bf6b815412f32c1a8d986c2f927f845abbebdc051adf9edfb64dfa4472715ef08970bc05dd69833de7311e596b01dc21735570175ffb74b08bc8c1888ebe46d0
7
+ data.tar.gz: fb05c6d864f98d744e57507c0c00145d1b19f689f76b4970d1c6901390ff94a8c4eea0bc81c6b7c3fb27371c3b46e23c28a9911853654d9adb97a77dbffa62d6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ### 4.20.13.1
4
+
5
+ - Supporting having a `drag_source` that is dragged and not dropped at a target go back to its original position
6
+ - Fix issue of dragged shape getting obscured by ensuring that it is rendered on top of all other shapes
7
+ - Fix issue with shapes obscured by shapes on top of them getting preference when dragged (surprising behavior). Now, the top-most shapes get dragged first if they overlap with others.
8
+
3
9
  ### 4.20.13.0
4
10
 
5
11
  - Shape `drag_and_move true` property to make shapes movable via dragging
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for SWT 4.20.13.0
1
+ # [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for SWT 4.20.13.1
2
2
  ## JRuby Desktop Development GUI Framework
3
3
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-swt.svg)](http://badge.fury.io/rb/glimmer-dsl-swt)
4
4
  [![Travis CI](https://travis-ci.com/AndyObtiva/glimmer-dsl-swt.svg?branch=master)](https://travis-ci.com/github/AndyObtiva/glimmer-dsl-swt)
@@ -15,7 +15,7 @@
15
15
  [<img src="https://covers.oreillystatic.com/images/9780596519650/lrg.jpg" width=105 /><br />
16
16
  Featured in JRuby Cookbook](http://shop.oreilly.com/product/9780596519650.do) and [Chalmers/Gothenburg University Software Engineering Master's Lecture Material](http://www.cse.chalmers.se/~bergert/slides/guest_lecture_DSLs.pdf)
17
17
 
18
- [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) 4.20.13.0 includes [SWT 4.20](https://download.eclipse.org/eclipse/downloads/drops4/R-4.20-202106111600/), which was released on June 11, 2021. Gem version numbers are in sync with the SWT library versions. The first two digits represent the SWT version number. The last two digits represent the minor and patch versions of Glimmer DSL for SWT. Note that SWT now supports AARCH64 on Mac and Linux, but it is not fully tested in Glimmer DSL for SWT yet, so deem its support experimental for the time being without guarantees for functionality until declared otherwise (report any issues you may encounter).
18
+ [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) 4.20.13.1 includes [SWT 4.20](https://download.eclipse.org/eclipse/downloads/drops4/R-4.20-202106111600/), which was released on June 11, 2021. Gem version numbers are in sync with the SWT library versions. The first two digits represent the SWT version number. The last two digits represent the minor and patch versions of Glimmer DSL for SWT. Note that SWT now supports AARCH64 on Mac and Linux, but it is not fully tested in Glimmer DSL for SWT yet, so deem its support experimental for the time being without guarantees for functionality until declared otherwise (report any issues you may encounter).
19
19
 
20
20
  **Starting in version 4.20.0.0, [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) comes with the new [***Shine***](/docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#shine) syntax** for highly intuitive and visually expressive View/Model Attribute Mapping, relying on `<=>` for bidirectional (two-way) data-binding and `<=` for unidirectional (one-way) data-binding, providing an alternative to the `bind` keyword (keep in mind that it is still a beta, so default back to `bind` whenever needed).
21
21
 
@@ -326,7 +326,7 @@ jgem install glimmer-dsl-swt
326
326
 
327
327
  Or this command if you want a specific version:
328
328
  ```
329
- jgem install glimmer-dsl-swt -v 4.20.13.0
329
+ jgem install glimmer-dsl-swt -v 4.20.13.1
330
330
  ```
331
331
 
332
332
  `jgem` is JRuby's version of `gem` command.
@@ -354,7 +354,7 @@ Note: if you're using activerecord or activesupport, keep in mind that Glimmer u
354
354
 
355
355
  Add the following to `Gemfile`:
356
356
  ```
357
- gem 'glimmer-dsl-swt', '~> 4.20.13.0'
357
+ gem 'glimmer-dsl-swt', '~> 4.20.13.1'
358
358
  ```
359
359
 
360
360
  And, then run:
@@ -375,7 +375,7 @@ glimmer
375
375
  ```
376
376
 
377
377
  ```
378
- Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.20.13.0
378
+ Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.20.13.1
379
379
 
380
380
  Usage: glimmer [--bundler] [--pd] [--quiet] [--debug] [--log-level=VALUE] [[ENV_VAR=VALUE]...] [[-jruby-option]...] (application.rb or task[task_args]) [[application2.rb]...]
381
381
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.20.13.0
1
+ 4.20.13.1
Binary file
@@ -120,6 +120,10 @@ module Glimmer
120
120
  paintable_shapes.each do |shape|
121
121
  shape.paint(paint_event)
122
122
  end
123
+ # When dragging, render dragged shape again on top of everything else.
124
+ if !@image_double_buffered && Glimmer::SWT::Custom::Shape.dragging?
125
+ Glimmer::SWT::Custom::Shape.dragged_shape.paint(paint_event)
126
+ end
123
127
  end
124
128
  if @image_double_buffered
125
129
  if @image_proxy_buffer.nil?
@@ -62,7 +62,7 @@ module Glimmer
62
62
  class Shape
63
63
  include Properties
64
64
 
65
- DropEvent = Struct.new(:x, :y, :dragged_shape, :dragged_shape_original_x, :dragged_shape_original_y, :dragging_x, :dragging_y, keyword_init: true)
65
+ DropEvent = Struct.new(:x, :y, :dragged_shape, :dragged_shape_original_x, :dragged_shape_original_y, :dragging_x, :dragging_y, :drop_shapes, keyword_init: true)
66
66
 
67
67
  class << self
68
68
  attr_accessor :dragging, :dragging_x, :dragging_y, :dragged_shape, :dragged_shape_original_x, :dragged_shape_original_y
@@ -132,6 +132,11 @@ module Glimmer
132
132
  def flyweight_patterns
133
133
  @flyweight_patterns ||= {}
134
134
  end
135
+
136
+ # shapes that have defined on_drop expecting to received a dragged shape
137
+ def drop_shapes
138
+ @drop_shapes ||= []
139
+ end
135
140
  end
136
141
 
137
142
  attr_reader :drawable, :parent, :name, :args, :options, :shapes, :properties
@@ -223,6 +228,11 @@ module Glimmer
223
228
  contain?(x, y)
224
229
  end
225
230
 
231
+ def include_with_children?(x, y)
232
+ included = include?(x, y)
233
+ included ||= expanded_shapes.detect { |shape| shape.include?(x, y) }
234
+ end
235
+
226
236
  # Indicates if a shape's x, y, width, height differ from its bounds calculation (e.g. arc / polygon)
227
237
  def irregular?
228
238
  false
@@ -570,18 +580,17 @@ module Glimmer
570
580
  @properties[attribute_name.to_s]
571
581
  end
572
582
  end
573
-
583
+
574
584
  def can_handle_observation_request?(observation_request)
575
585
  drawable.can_handle_observation_request?(observation_request)
576
586
  end
577
587
 
578
588
  def handle_observation_request(observation_request, &block)
579
589
  shape_block = lambda do |event|
580
- included = include?(event.x, event.y)
581
- included ||= expanded_shapes.detect { |shape| shape.include?(event.x, event.y) }
582
- block.call(event) if included
590
+ block.call(event) if include_with_children?(event.x, event.y)
583
591
  end
584
592
  if observation_request == 'on_drop'
593
+ Shape.drop_shapes << self
585
594
  handle_observation_request('on_mouse_up') do |event|
586
595
  if Shape.dragged_shape
587
596
  drop_event = DropEvent.new(
@@ -590,6 +599,7 @@ module Glimmer
590
599
  dragged_shape_original_y: Shape.dragged_shape_original_y,
591
600
  dragging_x: Shape.dragging_x,
592
601
  dragging_y: Shape.dragging_y,
602
+ drop_shapes: Shape.drop_shapes,
593
603
  x: event.x,
594
604
  y: event.y
595
605
  )
@@ -648,14 +658,12 @@ module Glimmer
648
658
  @drag_and_move = drag_and_move_value
649
659
  if @drag_and_move && !drag_and_move_old_value
650
660
  @on_drag_detected = handle_observation_request('on_drag_detected') do |event|
651
- if !Shape.dragging
652
- Shape.dragging = true
653
- Shape.dragging_x = event.x
654
- Shape.dragging_y = event.y
655
- Shape.dragged_shape = self
656
- Shape.dragged_shape_original_x = x
657
- Shape.dragged_shape_original_y = y
658
- end
661
+ Shape.dragging = true
662
+ Shape.dragging_x = event.x
663
+ Shape.dragging_y = event.y
664
+ Shape.dragged_shape = self
665
+ Shape.dragged_shape_original_x = x
666
+ Shape.dragged_shape_original_y = y
659
667
  end
660
668
  @drawable_on_mouse_move = drawable.handle_observation_request('on_mouse_move') do |event|
661
669
  if Shape.dragging && Shape.dragged_shape == self
@@ -685,14 +693,12 @@ module Glimmer
685
693
  @drag_source = drag_source_value
686
694
  if @drag_source && !drag_source_old_value
687
695
  @on_drag_detected = handle_observation_request('on_drag_detected') do |event|
688
- if !Shape.dragging
689
- Shape.dragging = true
690
- Shape.dragging_x = event.x
691
- Shape.dragging_y = event.y
692
- Shape.dragged_shape = self
693
- Shape.dragged_shape_original_x = x
694
- Shape.dragged_shape_original_y = y
695
- end
696
+ Shape.dragging = true
697
+ Shape.dragging_x = event.x
698
+ Shape.dragging_y = event.y
699
+ Shape.dragged_shape = self
700
+ Shape.dragged_shape_original_x = x
701
+ Shape.dragged_shape_original_y = y
696
702
  end
697
703
  @drawable_on_mouse_move = drawable.handle_observation_request('on_mouse_move') do |event|
698
704
  if Shape.dragging && Shape.dragged_shape == self
@@ -702,8 +708,11 @@ module Glimmer
702
708
  end
703
709
  end
704
710
  @drawable_on_mouse_up = drawable.handle_observation_request('on_mouse_up') do |event|
705
- if Shape.dragging && Shape.dragged_shape == self
711
+ if Shape.dragging && Shape.dragged_shape == self && !Shape.drop_shapes.detect {|shape| shape.include_with_children?(event.x, event.y)}
706
712
  Shape.dragging = false
713
+ Shape.dragged_shape.x = Shape.dragged_shape_original_x
714
+ Shape.dragged_shape.y = Shape.dragged_shape_original_y
715
+ Shape.dragged_shape = nil
707
716
  end
708
717
  end
709
718
  elsif !@drag_source && drag_source_old_value
@@ -25,6 +25,21 @@ class HelloCanvasDragAndDrop
25
25
  }
26
26
 
27
27
  background :white
28
+
29
+ 10.times do |n|
30
+ an_oval = oval((rand*300).to_i, (rand*200).to_i, 50, 50) {
31
+ background rgb(255, 165, 0)
32
+
33
+ # declare shape as a drag source, which unlike `drag_and_move true`, it means the shape now
34
+ # goes back to original position if not dropped at an on_drop shape target
35
+ drag_source true
36
+
37
+ # unspecified width and height become max width and max height by default
38
+ oval(0, 0) {
39
+ foreground :black
40
+ }
41
+ }
42
+ end
28
43
 
29
44
  @drop_square = rectangle(150, 260, 50, 50) {
30
45
  background :white
@@ -46,7 +61,8 @@ class HelloCanvasDragAndDrop
46
61
  @drop_square_border.foreground = :red if Glimmer::SWT::Custom::Shape.dragging?
47
62
  end
48
63
 
49
- on_drop do |event|
64
+ on_drop do |drop_event|
65
+ # drop_event attributes: :x, :y, :dragged_shape, :dragged_shape_original_x, :dragged_shape_original_y, :dragging_x, :dragging_y, :drop_shapes
50
66
  ball_count = @number_shape.string.to_i
51
67
  @number_shape.dispose
52
68
  @drop_square.content {
@@ -56,22 +72,10 @@ class HelloCanvasDragAndDrop
56
72
  string (ball_count + 1).to_s
57
73
  }
58
74
  }
59
- event.dragged_shape.dispose
75
+ drop_event.dragged_shape.dispose
60
76
  end
61
77
  }
62
-
63
- 10.times do |n|
64
- an_oval = oval((rand*300).to_i, (rand*200).to_i, 50, 50) {
65
- background rgb(255, 165, 0)
66
- drag_source true
67
-
68
- # unspecified width and height become max width and max height by default
69
- oval(0, 0) {
70
- foreground :black
71
- }
72
- }
73
- end
74
-
78
+
75
79
  on_mouse_up do
76
80
  @drop_square_border.foreground = :black
77
81
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-swt
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.20.13.0
4
+ version: 4.20.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andy Maleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-27 00:00:00.000000000 Z
11
+ date: 2021-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement