MCPcopy Create free account
hub / github.com/deskflow/deskflow / dropMimeData

Method dropMimeData

src/lib/gui/ScreenSetupModel.cpp:105–149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

103}
104
105bool ScreenSetupModel::dropMimeData(
106 const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent
107)
108{
109 if (action == Qt::IgnoreAction)
110 return true;
111
112 if (!data->hasFormat(m_MimeType))
113 return false;
114
115 if (!parent.isValid() || row != -1 || column != -1)
116 return false;
117
118 QByteArray encodedData = data->data(m_MimeType);
119 QDataStream stream(&encodedData, QIODevice::ReadOnly);
120
121 int sourceColumn = -1;
122 int sourceRow = -1;
123
124 stream >> sourceColumn;
125 stream >> sourceRow;
126
127 const auto pColumn = parent.column();
128 const auto pRow = parent.row();
129
130 // don't drop screen onto itself
131 if (sourceColumn == pColumn && sourceRow == pRow)
132 return false;
133
134 Screen droppedScreen;
135 stream >> droppedScreen;
136
137 if (auto oldScreen = Screen(screen(pColumn, pRow)); !oldScreen.isNull() && sourceColumn != -1 && sourceRow != -1) {
138 // mark the screen so it isn't deleted after the dragndrop succeeded
139 // see ScreenSetupView::startDrag()
140 oldScreen.setSwapped(true);
141 screen(sourceColumn, sourceRow) = oldScreen;
142 }
143
144 screen(pColumn, pRow) = droppedScreen;
145
146 Q_EMIT screensChanged();
147
148 return true;
149}
150
151void ScreenSetupModel::addScreen(const Screen &newScreen)
152{

Callers

nothing calls this directly

Calls 6

hasFormatMethod · 0.80
isNullMethod · 0.80
setSwappedMethod · 0.80
ScreenClass · 0.50
isValidMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected