15858 Commits

Author SHA1 Message Date
BogDan Vatra
f96c4a2308 Block the events while showing a dialog
When showing a file dialog, Qt can choose to use the "system" file
dialog, which will make QgsExternalResourceWidget to loose the focus.
This patch blocks all the events that are sent to
QgsExternalResourceWidget while a dialog is shown, this way it will keep
the focus until the dialog is closed.

Sponsored by the QGIS project (qgis.org)

Fixes: #26948
2019-09-22 12:28:52 +03:00
Alessandro Pasotti
240bfb2a3f
Merge pull request #31871 from elpaso/bugfix-gh31635-spinbox-double-changed-event
Fix double event fired by QSpinBox in slow graduated
2019-09-20 09:04:34 +02:00
Julien Cabieces
2ab88ad501 fieldIsEditable looks for joined feature to exist if no upsertOnEdit 2019-09-20 09:49:12 +10:00
Julien Cabieces
484ee53899 Add a utils method fieldIsEditable 2019-09-20 09:49:12 +10:00
Alexander Bruy
f9737a9d5f [processing] add default icon for scripts created using decorator (fix #31252) 2019-09-20 06:37:31 +10:00
Denis Rouzaud
cc64787ee6
Merge pull request #31859 from 3nids/layer_tree_insertion_point_v2
[layer tree] dedicated method in QgisApp to determine insertion point
2019-09-19 11:17:58 +02:00
Alessandro Pasotti
60fb0cb47f Apply timer spinbox workaround to QgsDoubleSpinBox too
To prevent double changed event fired in case the slot
takes too long to execute.
2019-09-19 09:10:26 +02:00
Denis Rouzaud
13119193ba fix API doc and init values 2019-09-19 09:05:40 +02:00
rldhont
3ff8ca5736
Merge pull request #31855 from Gustry/datetime
update docstring about QgsDateTimeEdit with NULL values
2019-09-18 18:42:57 +02:00
rldhont
7a77d90c52
Merge pull request #31351 from rldhont/server-wms-dimensions
Support WMS dimensions in QGIS Server
2019-09-18 18:26:31 +02:00
Alessandro Pasotti
8192ed8cce Fix double event fired by QSpinBox in slow graduated
... renderer widget

Fixes #31635

For the record of the underlying issue:

https://lists.qt-project.org/pipermail/interest/2013-July/007936.html
https://forum.qt.io/topic/82181/qt-doublespin-box-value-changed-slot-has-called-twice
https://forum.qt.io/topic/96094/qspinbox-value-changed-slot-has-called-twice-on-mouse-click
https://www.qtcentre.org/threads/53709-slot-valueChanged(double)-of-doubleSpinBox-called-twice-if-breakpoint-is-set
2019-09-18 15:06:31 +02:00
Nyall Dawson
fcd21e4850 [reports] Fix predefined scale mode is incompatible with report outputs
Fixes #29196
2019-09-18 10:35:23 +10:00
Nyall Dawson
ffc71c4f57 Remove const_cast 2019-09-18 07:55:46 +10:00
Nyall Dawson
3de0593957 Ensure atlas expression evaluation has access to coverage layer scope
Fixes #31807
2019-09-18 07:55:46 +10:00
Denis Rouzaud
838dbef3c0 [layer tree] dedicated method in QgisApp to determine insertion point
and create bindings to get the current insertion point in QgisInterface
2019-09-17 20:55:40 +02:00
Harrissou Sant-anna
493a8c814f Add empty line for list rendering 2019-09-18 04:13:31 +10:00
Etienne Trimaille
3b95172362
update docstring about QgsDateTimeEdit about NULL values 2019-09-17 17:25:15 +02:00
Alexander Bruy
27b576c794
Merge pull request #31735 from alexbruy/fix-29663
[processing] add support for WFS as input (fix #29663)
2019-09-17 15:54:48 +03:00
Alexander Bruy
c7c91de52e fix tests 2019-09-17 08:32:01 +03:00
Even Rouault
5e70084d32 QgsRasterFileWriter: improve error reporting 2019-09-17 08:58:25 +10:00
rldhont
4823054019 Define an enum for predefined WMS Dimension names 2019-09-16 22:52:32 +02:00
Even Rouault
cbc86ffc1a
Processing: disable 'open output layer' for write-only formats such as PGDUMP (relates to #31421) 2019-09-16 18:25:16 +02:00
Borys Jurgiel
e3334b1e65
Merge pull request #31784 from borysiasty/plugininstaller_fix_31783
[Plugin Installer] Only force http icon protocol for http-based repositories
2019-09-16 09:24:04 +02:00
Borys Jurgiel
1aa102815c [Plugin Installer] Only force http icon protocol for http-based repositories. Fixes #31783 2019-09-16 08:30:47 +02:00
Alessandro Pasotti
04f0879ed5 Processing editing in place: handle constraints
Fixes #31634
2019-09-16 10:41:58 +10:00
Even Rouault
fdcca14f65
Make sure ellipsoid parameter and definition caches are cleared before app exit (related to #31762)
This should apply to both PROJ < 6 and >=6 builds.

Fixes the following error reported by Valgrind
```
==5848== Invalid read of size 4
==5848==    at 0xE5E4195: internal_pj_ctx_get_errno (in /home/even/proj/install-proj-master/lib/libproj.so.15.2.0)
==5848==    by 0xE5E16AE: internal_pj_free (in /home/even/proj/install-proj-master/lib/libproj.so.15.2.0)
==5848==    by 0xE5F4E78: internal_proj_destroy (in /home/even/proj/install-proj-master/lib/libproj.so.15.2.0)
==5848==    by 0x7F961A7: QgsProjUtils::ProjPJDeleter::operator()(PJconsts*) (qgsprojutils.cpp:76)
==5848==    by 0x7D2D44C: std::unique_ptr<PJconsts, QgsProjUtils::ProjPJDeleter>::~unique_ptr() (unique_ptr.h:239)
==5848==    by 0x7D2C9BD: QgsCoordinateReferenceSystemPrivate::~QgsCoordinateReferenceSystemPrivate() (qgscoordinatereferencesystem_p.h:94)
==5848==    by 0x7D2D6FA: QExplicitlySharedDataPointer<QgsCoordinateReferenceSystemPrivate>::~QExplicitlySharedDataPointer() (qshareddata.h:165)
==5848==    by 0x7CDFA77: QgsCoordinateReferenceSystem::~QgsCoordinateReferenceSystem() (qgscoordinatereferencesystem.cpp:233)
==5848==    by 0x55CC0AF: QgsEllipsoidUtils::EllipsoidParameters::~EllipsoidParameters() (qgsellipsoidutils.h:39)
==5848==    by 0x7D8C40B: QHashNode<QString, QgsEllipsoidUtils::EllipsoidParameters>::~QHashNode() (qhash.h:149)
==5848==    by 0x7D8C43F: QHash<QString, QgsEllipsoidUtils::EllipsoidParameters>::deleteNode2(QHashData::Node*) (qhash.h:536)
==5848==    by 0x9BE3B78: QHashData::free_helper(void (*)(QHashData::Node*)) (in /opt/qt59/lib/libQt5Core.so.5.9.1)
==5848==    by 0x7D8C466: QHash<QString, QgsEllipsoidUtils::EllipsoidParameters>::freeData(QHashData*) (qhash.h:576)
==5848==    by 0x7D8CCED: QHash<QString, QgsEllipsoidUtils::EllipsoidParameters>::~QHash() (qhash.h:254)
==5848==    by 0xA60E369: __cxa_finalize (cxa_finalize.c:56)
==5848==    by 0x77BE742: ??? (in /home/even/qgis/QGIS/build/output/lib/libqgis_core.so.3.9.0)
==5848==    by 0x4010DF6: _dl_fini (dl-fini.c:235)
==5848==    by 0xA60DFF7: __run_exit_handlers (exit.c:82)
==5848==    by 0xA60E044: exit (exit.c:104)
==5848==    by 0xA5F4836: (below main) (libc-start.c:325)
==5848==  Address 0x45db80e0 is 0 bytes inside a block of size 136 free'd
==5848==    at 0x4C2F440: operator delete(void*) (vg_replace_malloc.c:586)
==5848==    by 0xE5F5A3A: internal_proj_context_destroy (in /home/even/proj/install-proj-master/lib/libproj.so.15.2.0)
==5848==    by 0x7F9617A: QgsProjContext::~QgsProjContext() (qgsprojutils.cpp:48)
==5848==    by 0xA60E5FE: __call_tls_dtors (cxa_thread_atexit_impl.c:155)
==5848==    by 0xA60DF26: __run_exit_handlers (exit.c:40)
==5848==    by 0xA60E044: exit (exit.c:104)
==5848==    by 0xA5F4836: (below main) (libc-start.c:325)
==5848==  Block was alloc'd at
==5848==    at 0x4C2E709: operator new(unsigned long, std::nothrow_t const&) (vg_replace_malloc.c:387)
==5848==    by 0xE5E445E: internal_pj_ctx_alloc (in /home/even/proj/install-proj-master/lib/libproj.so.15.2.0)
==5848==    by 0x7F96151: QgsProjContext::QgsProjContext() (qgsprojutils.cpp:39)
==5848==    by 0x7F970A9: __tls_init (qgsprojutils.cpp:31)
==5848==    by 0x7F970F3: TLS wrapper function for QgsProjContext::sProjContext (in /home/even/qgis/QGIS/build/output/lib/libqgis_core.so.3.9.0)
==5848==    by 0x7F96186: QgsProjContext::get() (qgsprojutils.cpp:57)
==5848==    by 0x7D86B13: QgsEllipsoidUtils::definitions() (qgsellipsoidutils.cpp:351)
==5848==    by 0x7D863FE: QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1}::operator()() const (qgsellipsoidutils.cpp:173)
==5848==    by 0x7D87EE1: void std::_Bind_simple<QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1} ()>::_M_invoke<>(std::_Index_tuple<>) (functional:1531)
==5848==    by 0x7D87BC5: std::_Bind_simple<QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1} ()>::operator()() (functional:1520)
==5848==    by 0x7D879A2: void std::__once_call_impl<std::_Bind_simple<QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1} ()> >() (mutex:706)
==5848==    by 0x10A6AA98: __pthread_once_slow (pthread_once.c:116)
==5848==    by 0x7D863CE: __gthread_once(int*, void (*)()) (gthr-default.h:699)
==5848==    by 0x7D8787F: void std::call_once<QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1}>(std::once_flag&, QgsEllipsoidUtils::ellipsoidParameters(QString const&)::{lambda()#1}&&) (mutex:738)
==5848==    by 0x7D86476: QgsEllipsoidUtils::ellipsoidParameters(QString const&) (qgsellipsoidutils.cpp:174)
==5848==    by 0x7E8D572: QgsMapSettings::setEllipsoid(QString const&) (qgsmapsettings.cpp:322)
==5848==    by 0x6A4E5F1: QgsMapCanvas::QgsMapCanvas(QWidget*) (qgsmapcanvas.cpp:143)
==5848==    by 0x5110841: QgisApp::QgisApp(QSplashScreen*, bool, bool, QString const&, QString const&, QWidget*, QFlags<Qt::WindowType>) (qgisapp.cpp:803)
==5848==    by 0x417DB9: main (main.cpp:1339)
==5848==
```
2019-09-14 15:19:02 +02:00
Peter Petrik
cdd3a55e9e fix #30766, sip crash for QgsHighlight 2019-09-14 06:38:25 +10:00
rldhont
635e245143
Merge pull request #31746 from Gustry/combo_sql
fix combobox ID not having correct checked state when we update a SQL layer
2019-09-13 19:05:16 +02:00
Alessandro Pasotti
784fd1affd
Merge pull request #31741 from elpaso/bugfix-gh31732-datasource-manager-tabs-resize
Resize not-focused tabs for datasource and options dlgs
2019-09-13 18:27:45 +02:00
Etienne Trimaille
37803810eb
fix combobox ID not having correct checked state when we update a SQL layer 2019-09-13 17:46:38 +02:00
Juergen E. Fischer
99a525c513 translation string fixes [ci skip] 2019-09-13 13:35:40 +02:00
Alessandro Pasotti
81985a9ca4 Resize not-focused tabs for datasource and options dlgs
Moved logic into base class. I did not find any other
suclass affected.
2019-09-13 12:38:48 +02:00
Alexander Bruy
af77d68716 return only base URL as connection string
adopt ogrinfo and ogrtabletopostgis algorithms so they can work with WFS
2019-09-13 11:11:53 +03:00
Alexander Bruy
4b7eaa4b9c [processing] support for WFS layers in GDAL algorithms (fix #29663) 2019-09-13 09:14:04 +03:00
Nyall Dawson
587c011046 [layouts] Fix grids cannot be disabled, ui widgets for grids get incorrectly
disabled blocking the ability to re-enable grids (master only)
2019-09-13 10:36:06 +10:00
Nyall Dawson
f4d407d9ee Add fromBezierCurve method to QgsLineString
Returns a new QgsLineString as a segmentized version of a bezier curve.
2019-09-13 05:37:37 +10:00
Alessandro Pasotti
9b7a2cd5d1
Merge pull request #31673 from elpaso/server-api-wfs3-acl
Server api wfs3 acl
2019-09-12 15:07:28 +02:00
Alexander Bruy
3f54e1db9a use doublequotes for indentifiers as required by GDAL's RFC52 2019-09-12 12:09:29 +03:00
Alexander Bruy
e1c97dc5ba [processing] quote field names in GDAL commands (fix #30878) 2019-09-12 10:52:31 +03:00
Nyall Dawson
423b779411 [needs-docs] Add iface.pluginHelpMenu()
Returns a reference to the main window "Plugin Help" sub-menu.

Plugins are encouraged to insert help and about actions in this submenu instead of creating
a submenu under the pluginMenu() which solely contains Plugin Help or About actions.

For example, a plugin which only implements a processing provider should not
create additional ui menus just to link to the plugin help pages. Rather, they
should use this new submenu (available under the Help menu) to insert
their help links.
2019-09-12 11:27:42 +10:00
Alessandro Pasotti
67c8e56f9c QGIS Server WFS3 ACL + alias + excluded fields
Takes into account aliases, excluded attributes and ACL plugins
2019-09-10 18:21:53 +02:00
Alessandro Pasotti
95c0ad54ff WFS3 add ACL and other visibility options 2019-09-10 18:21:53 +02:00
Nyall Dawson
c02686dbd0 Add API for volume units to QgsUnitTypes
Complements the existing API for distance and area handling
2019-09-09 20:12:45 +10:00
rldhont
cc58cba93d API: Define QgsVectorLayerServerProperties to manage QGIS Server properties like WMS DImensions 2019-09-07 16:07:10 +02:00
rldhont
3edd081cc1 Update UI to manage QGIS Server WMS Dimensions 2019-09-07 16:05:10 +02:00
Matthias Kuhn
bf8263a40f
Merge pull request #31377 from seralra96/fix_30063
Prevent installation of ZIP plugins if they don't have the root folder
2019-09-07 08:47:34 +02:00
Nyall Dawson
2212617f0c Reuse a single expression context when building icons in QgsStyleModel
Whilst usually this is bad practice (reusing an existing expression context),
and instead you should make a new context for every batch of expression evaluations,
we can't do this in the style model and we end up potentially creating
thousands of new contexts. So instead, we use a single one, which is
safe because the actual expression context used here is a very
basic one...
2019-09-07 15:56:40 +10:00
Nyall Dawson
6b1e96c180 Make a shared instance of QgsStyleModel for the default application style
This allows shared caching of symbol icons, greatly speeding up display
of views which use style models
2019-09-07 15:56:40 +10:00
Nyall Dawson
d94329a788 Make QgsProject responsible for project expression context creation,
and cache the project expression context as much as possible

This scope can be expensive to create upfront, but is cheap to copy
2019-09-07 15:56:40 +10:00
Geoff Kimbell
283c8b813a [processing] fix gdalwarp handling of custom projection for target extent
Fixes #31276
2019-09-07 08:24:14 +10:00